Если вам не нужно иметь двойные кавычки в выходном файле, тогда вы должны разбить строки на двойные кавычки:
import csv
import io
text = '''01"815732013.0"1brand1"[100 76 64 ... 153 139 94]"
01"815732025.0"1female1"[183 192 201 ... 18 10 0]"
01"815732027.0"1male1"[204 214 221 ... 214 221 255]"'''
with io.StringIO(text) as f, open('output.csv', 'w') as of:
writer = csv.writer(of, delimiter=',', quotechar='"')
for line in f:
line = [r for r in line.strip().split('"') if r]
writer.writerow(line)
Этот фрагмент кода довольно хорошпростой.Вы в основном разбиваете на двойные кавычки и отбрасываете пустые строки.
Если вы хотите, чтобы ваш выходной файл содержал кавычки, то вам, возможно, придется использовать некоторое регулярное выражение для захвата полей:
import csv
import io
import re
text = '''01"815732013.0"1brand1"[100 76 64 ... 153 139 94]"
01"815732025.0"1female1"[183 192 201 ... 18 10 0]"
01"815732027.0"1male1"[204 214 221 ... 214 221 255]"'''
with io.StringIO(text) as f, open('output.csv', 'w') as of:
pat = re.compile(r'(\d+)(\b".+"\b)(\w+)(\b".+"\b)')
writer = csv.writer(of, delimiter=',', quotechar='"')
for line in f:
line = pat.sub(r'\1;\2;\3;\4', line.strip()).split(';')
writer.writerow(line)
Это очень похоже на предыдущий фрагмент с единственным отличием в регулярном выражении.Выражение группирует различные поля в соответствии с желаемым результатом.Эти группы используются для генерации набора значений строк, которые передаются методу writer.writerow
для записи строки в целевой файл.
Надеюсь, это окажется полезным.