Запись каждого подсписка в списке списков в отдельный CSV - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть список списков, содержащих различное количество строк в каждом подсписке:

tq_list = [['The mysterious diary records the voice.', 'Italy is my favorite country', 'I am happy to take your donation', 'Any amount will be greatly appreciated.'], ['I am counting my calories, yet I really want dessert.', 'Cats are good pets, for they are clean and are not noisy.'], ['We have a lot of rain in June.']]

Я хотел бы создать новый файл CSV для каждого подсписка.Все, что у меня есть, - это способ вывести каждый подсписок в виде строки в одном и том же CSV-файле, используя следующий код:

name_list = ["sublist1","sublist2","sublist3"]

with open("{}.csv".format(*name_list), "w", newline="") as f:
    writer = csv.writer(f)
    for row in tq_list:
        writer.writerow(row)

. Это создает один CSV-файл с именем 'sublist1.csv'.


Я поиграл со следующим кодом:

name_list = ["sublist1","sublist2","sublist3"]

for row in tq_list:
    with open("{}.csv".format(*name_list), "w", newline="") as f:
        writer = csv.writer(f)
        writer.writerow(row)

, который также выводит только один CSV-файл с именем 'sublist1.csv', но только со значениями из последнего подсписка.Я чувствую, что это шаг в правильном направлении, но, очевидно, еще не совсем.

1 Ответ

0 голосов
/ 26 февраля 2019

Что на самом деле делает * в "{}.csv".format(*name_list) в вашем коде, так это: он распаковывает элементы в name_list для передачи в функцию (в данном случае format).Это означает, что format(*name_list) эквивалентно format("sublist1", "sublist2", "sublist3").Поскольку в вашей строке содержится только один {}, все аргументы для форматирования, кроме "sublist1", по существу отбрасываются.

Возможно, вы захотите сделать что-то вроде этого:

for index, row in enumerate(tq_list):
    with open("{}.csv".format(name_list[index]), "w", newline="") as f:
        ...

enumerate возвращает счетный индекс вместе с каждым итерируемым элементом, чтобы вы могли отслеживать, сколько элементов уже было.Таким образом, вы можете записывать в разные файлы каждый раз.Вы также можете использовать zip, другую удобную функцию, которую вы можете найти в документации по Python.

...