Мне нужно обработать некоторые файлы .csv. Некоторые из них имеют записи в поле 1 двойная кавычка ("
) или, возможно, несколько смешанных с другим текстом. Мне нужно избежать их всех. Пока я делаю это:
def process_file():
input_path = 'input.txt'
output_path = 'output.txt'
with open(input_path) as input_file, open(output_path, 'w+') as output_file:
for line in input_file:
newline = line.replace('"', '""""')
output_file.write(newline)
Как я могу убедиться, что замена происходит только с одиночными символами и не заменяет, например, ""
или """"
.
Я хотел бы использовать Python вместо любого решения командной строки. Кроме того, эти файлы очень большие, поэтому я зацикливаюсь на строках, а не загружаю все это в память.
Благодаря @mkrieger1 и этому вопросу я смог собрать это решение:
def process_file():
input_path = 'input.txt'
output_path = 'output.txt'
with open(input_path) as input_file, open(output_path, 'w+') as output_file:
for line in input_file:
newline = re.sub(r'(?<!")"(?!")', '""""', line)
output_file.write(newline)
Вы можете использовать регулярное выражение:
import re
newline = re.sub(r'^"$', '"""', line)
csv
?