Могу я предложить вместо разбора файла CSV вручную использовать csv , который является встроенным. Он заботится о разделителях, экранировании символов и т. Д. Это тоже простой API:
import csv
# Auto-detector of this particular CSV dialect (delimiters and such)
dialect = csv.Sniffer().sniff(open('one.csv').read())
# csv.reader yields every row found in the file using the given dialect
rows = csv.reader(open('one.csv'), dialect = dialect)
# [list comprehension][2]
resulting_dict = dict((row[0], row[1:]) for row in rows)
Вы можете преобразовать код в функцию и использовать его для обоих файлов (хотя кодирование из памяти, но остерегайтесь ошибок).
Теперь у вас есть два диктанта для двух файлов, скажем, dict1
и dict2
, вы можете объединить их:
combined_dict = dict((key, dict1[key] + dict2[key]) for key in dict2)
Запись в файл .csv также проста:
writer = csv.writer(open('second.csv', 'w'), delimiter = '\t')
for key, values in combined_dict:
writer.writerow(key, *values)
Обязательно ознакомьтесь с документами для более подробного ознакомления.
Редактировать: Мое решение не учитывает порядок строк (dict неупорядочен). Есть два решения:
- если вы работаете с Python 3 или Python 2.7, используйте collection.OrderedDict
- в противном случае вам необходимо сохранить порядок строк - например, при чтении второго файла разбить понимание списка на стандартную инструкцию
for
и сохранить заголовки в списке.