Я хотел бы преобразовать приведенный ниже скрипт Powershell в код Python.
- Код принимает в имени файла и расширении, разделенных запятыми.
- Приведенный ниже код экспортирует файл как файл с разделителями каналов
- Затем он удаляет запятые, которые существуют в данных
- Наконец, он также удаляет двойные кавычки, используемые для уточнения данных.
В результате конечный файл будет разделен вертикальной чертой без двойных кавычек или запятых в данных. При выполнении этой работы я использовал этот порядок, потому что, если вы попытаетесь просто заменить двойные кавычки и запятые перед установкой каналов, столбцы и данные сломаются.
Param([string]$RootString, [string]$Ext)
$OrgFile = $RootString
$NewFile = $RootString.replace($Ext,"out")
Import-Csv $OrgFile -Encoding UTF8 | Export-Csv tempfile.csv -Delimiter "|" -NoTypeInformation
(Get-Content tempfile.csv).Replace(",","").Replace('"',"") | Out-File $NewFile -Encoding UTF8
Copy-Item -Force $NewFile $OrgFile
Remove-Item –path $NewFile -Force
Я получил за это балл, но. Не видел смысла выкладывать плохой код, который не работает. Вот моя версия неработающего кода.
for index in range(len(dfcsv)):
filename = dfcsv['csvpath'].iloc[index]
print(filename)
print(i)
with open(filename, 'r+') as f:
text = f.read()
print(datetime.now())
text = re.sub('","', '|', text)
print(datetime.now())
f.seek(0)
f.write(text)
f.truncate()
i = i + 1
Проблемы с этим кодом - это метод поиска и замены. Это создавало дополнительный столбец в начале из-за двойной кавычки. Затем иногда дополнительный столбец в конце, поскольку иногда в конце были двойные кавычки. Это привело к слиянию данных из разных строк. Я не публиковал эту часть, поскольку не думал, что это необходимо для моей цели. Более актуальным казалось поставить рабочий код для лучшего представления о цели. Вот нерабочий код.