Сначала вам нужно будет реструктурировать данные, прежде чем преобразовать их в формат csv
.
Попробуйте:
import csv
from collections import OrderedDict
with open('data.txt', 'r') as data, open('output.csv', 'w') as file:
rows = data.read().split('\n\n')
output = [
OrderedDict(
(k.rstrip(':'), v) for k, v in zip(row.split('\n')[::2], row.split('\n')[1::2])
)
for row in rows
]
writer = csv.DictWriter(file, fieldnames=output[0].keys(), lineterminator='\n')
writer.writeheader()
writer.writerows(output)
Образец повтора
Вывод:
Current job title,Current salary,Experience,Desired location,Desired job title,Desired salary,Job Type
meter engineer,"£30,000",2 years,Not supplied,smart meter engineer,"£30,000",Permanent | Contract | Temp
dual fuel smart meter engineer,"£30,000",4 years,Not supplied,Not supplied,"£34,999",Permanent | Contract | Temp
Обратите внимание, что вам нужно использовать OrderedDict
, поскольку объекты словаря не упорядочены в python 2.7 и могут вызвать проблемы для вашего файла csv
.Соответствующий псевдо OrderedDict
понимание было вдохновлено этим ответом здесь: Есть ли понимание OrderedDict?
Как примечание - Python 2.7 закатывается.Вам действительно стоит подумать о переносе вашего проекта на базу Python 3.x.