将列表列表中的每个子列表写入单独的 CSV
Writing each sublist in a list of lists to a separate CSV
我有一个列表列表,每个子列表中包含不同数量的字符串:
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)
这将创建一个名为 'sublist1.csv' 的 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)
它也仅输出一个名为 'sublist1.csv' 的 CSV 文件,但仅包含最后一个子列表中的值。我觉得这是朝着正确方向迈出的一步,但显然还不够。
代码中 "{}.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
returns 一个计数索引及其迭代的每个元素,以便您可以跟踪已经有多少元素。这样你每次都可以写入不同的文件。您还可以使用 zip
,另一个方便的函数,您可以在 Python 文档中查找。
我有一个列表列表,每个子列表中包含不同数量的字符串:
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)
这将创建一个名为 'sublist1.csv' 的 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)
它也仅输出一个名为 'sublist1.csv' 的 CSV 文件,但仅包含最后一个子列表中的值。我觉得这是朝着正确方向迈出的一步,但显然还不够。
代码中 "{}.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
returns 一个计数索引及其迭代的每个元素,以便您可以跟踪已经有多少元素。这样你每次都可以写入不同的文件。您还可以使用 zip
,另一个方便的函数,您可以在 Python 文档中查找。