将有序元组列表保存为 CSV [重复]
Posted
技术标签:
【中文标题】将有序元组列表保存为 CSV [重复]【英文标题】:Save list of ordered tuples as CSV [duplicate] 【发布时间】:2013-03-12 18:44:56 【问题描述】:我有一个按值排序的元组列表。它们的格式为(name,count)
,其中
count 是每个唯一名称的出现次数。
我想将此列表转换为 CSV,其中每个名称都是列标题 每个值都是单行的列值。
有什么建议吗?谢谢。
【问题讨论】:
请编辑您的帖子以包含您对解决方案的尝试。人们会为你指明正确的方向。提示:看看标准库中的csv
模块。
只需在 for 循环中写一个字符串output += myTuple[0] + ', ' + myTuple[1] + '\n'
。循环完成后,将output
写入*.csv
文件。
只需import csv
并阅读模块文档,非常简单。 docs.python.org/2/library/csv.html
【参考方案1】:
Python, transposing a list and writing to a CSV file
import csv
lol = [(1,2,3),(4,5,6),(7,8,9)]
item_length = len(lol[0])
with open('test.csv', 'wb') as test_file:
file_writer = csv.writer(test_file)
for i in range(item_length):
file_writer.writerow([x[i] for x in lol])
输出
1,4,7
2,5,8
3,6,9
请注意,在 python 3 中尝试可能会出现TypeError: a bytes-like object is required, not 'str' in python and CSV 中提到的错误。
考虑将with open('ur file.csv','w') as out:
用于python 3。
【讨论】:
【参考方案2】:你可以这样做:
import csv
# note: If you use 'b' for the mode, you will get a TypeError
# under Python3. You can just use 'w' for Python 3
data=[('smith, bob',2),('carol',3),('ted',4),('alice',5)]
with open('ur file.csv','wb') as out:
csv_out=csv.writer(out)
csv_out.writerow(['name','num'])
for row in data:
csv_out.writerow(row)
# You can also do csv_out.writerows(data) instead of the for loop
输出文件将有:
name,num
"smith, bob",2
carol,3
ted,4
alice,5
【讨论】:
非常不规则,writerow() 只在一些字符串周围加上引号。我的原始数据根本没有引号。有什么相关的吗? 如果您使用的是 Windows,请使用模式 'wb' 打开文件以避免在输出中的每一行之间出现空行。 在 Python 3 中,使用模式“w”而不是“wb”,以避免出现 TypeError。您可以传递newline=''
,它将处理多余的空行。
我收到此错误,需要类似字节的对象而不是 str。
@AbdulHaseeb:那是从二进制模式打开文件open('ur file.csv','wb')
b
在Python 3模式下。只需在打开模式下删除b
。以上是关于将有序元组列表保存为 CSV [重复]的主要内容,如果未能解决你的问题,请参考以下文章