首页 > 解决方案 > CSV.writer 将每个集合条目放在一个新行上

问题描述

环境: Windows 上的 Python 3.7
目标:将一个集合写入 .csv 文件,每个集合条目都在一个新行上。
问题:每个集合条目不在新行上...当我在 Excel 中打开 CSV 文件时,每个集合条目都位于单独的列中,而不是单独的行中。
问题:我需要做什么才能让每个集合条目都写在新行上?

import csv
test_set = {'http://www.apple.com', 'http://www.amazon.com', 'http://www.microsoft.com', 'https://www.ibm.com'}
with open('output.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows([test_set])
    f.close()

标签: pythonpython-3.xcsv

解决方案


您传递writer.writerows()了一个包含单个元素的列表,因此它只写了一行。

您需要将您的集合转换为一系列行;每行一个包含行内容的列表。您可以使用生成器表达式来生成行:

writer.writerows([value] for value in test_set)

但是,您并没有真正在此处生成 CSV。使用单个列,您也可以将设置的内容直接写入文件,中间有换行符。该print()功能可以用于此任务:

with open('output.csv', 'w') as f:
    print(*test_set, sep='\n', file=f)

推荐阅读