Sto riscontrando problemi nel tentativo di estrarre i separatori di migliaia da alcuni valori di valuta in un insieme di file. I valori "cattivi" sono delimitati da virgole e virgolette. Ci sono altri valori in là che sono < $ 1000 che non presentano alcun problema.sostituire migliaia separatori in csv con regex
Esempio di file esistente:
"12,345.67",12.34,"123,456.78",1.00,"123,456,789.12"
Esempio di desiderava di file (migliaia separatori rimossi):
"12345.67",12.34,"123456.78",1.00,"123456789.12"
ho trovato un'espressione regex per abbinare i numeri con i separatori che funziona grande, ma ho problemi con l'operatore -replace. Il valore di sostituzione mi confonde. Ho letto su $ & e mi chiedo se dovrei usarlo qui. Ho provato $ _, ma questo tira fuori TUTTE le mie virgole. Devo usare $ partite in qualche modo?
Ecco il mio codice:
$Files = Get-ChildItem *input.csv
foreach ($file in $Files)
{
$file |
Get-Content | #assume that I can't use -raw
% {$_ -replace '"[\d]{1,3}(,[\d]{3})*(\.[\d]+)?"', ("$&" -replace ',','')} | #this is my problem
out-file output.csv -append -encoding ascii
}
Usa import-csv e quindi è possibile scorrere ciclicamente le righe e gli elementi, rimuovere le virgole da ciascun elemento, mentre si costruiscono nuove righe mentre si procede, quindi salvare le nuove righe nel file sovrascrivendole. –