Есть ли способ добавить строку в начале строки при написании с использованием csv.writerow - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь добавить строку в начале строки, пока она записывается в файл. Я использую функцию .writerow () библиотеки csv и передаю внутри нее упорядоченный дикт.

У меня есть файл в формате, подобном: A, B, C, D, E 123,234,345,456,567 1123,1234,1345, 1456,1567

Ожидаемый выход после мутации: A, B, C, D, E 1, «123», «234», «345», «456», «567» 1, «1123», «1234», «1345», «1456», «1567» пользовательский нижний колонтитул здесь

Я знаю, что выше, возможно, не является допустимым форматом CSV. Но вот как я этого хочу. : D

т. Е. 1 в начале 2–2 последней кавычки последней строки вокруг каждого поля

Пример данных, например, для input.csv

A,B,C,D,E
123,234,345,456,567
1123,1234,1345,1456,1567
When above read with `csv_reader = csv.DictReader(read_file, delimiter=',')` it'll show something like
for i in csv_reader:
    print(i)

OrderedDict ([(«A», «123»), («B», «234»), («C», «345»), («D», «456»), («E», «567»)]) OrderedDict ([(«A», «1123»), («B», «1234»), («C», «1345»), («D», «1456»), («E»,'1567')])

При добавлении (['some_string'] + order_dict_row) выдается ошибка, из-за которой заказанный приговор не может быть объединен со списком.

Попытка ввести дополнительный ключговорит, что ключ не может быть найден в именах полей

Пытался ввести столбец и добавить к нему 1, но пока не смог сделать это успешно.

csv_reader = csv.DictReader(read_file, delimiter=',')
# fieldnames = ['row_type_identifier'] + csv_reader.fieldnames
with open(f'{file_path}', 'r') as read_file:
    csv_reader = csv.DictReader(read_file, delimiter=',')
    # fieldnames = ['row_type_identifier'] + csv_reader.fieldnames
    csv_writer = csv.DictWriter(write_file, fieldnames=out_fields)
    write_file.write(header)
    write_file.write('\n')
    count = 0
    for row in csv_reader:
        # row.update({'row_type_identifier':'1'})
        # row.move_to_end('row_type_identifier', last=False)
        print(row)
        csv_writer.writerow(row)
I've a file with format like:
A,B,C,D,E
123,234,345,456,567
1123,1234,1345,1456,1567

Expected output after mutation:
A,B,C,D,E
1,"123","234","345","456","567"
1,"1123","1234","1345","1456","1567"
a custom footer here
...