将有序元组列表保存为 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

python列表,元组,字典,集合的比较总结

对于列表,元组,字典,集合的特点比较

如何将 DataFrame 保存为列表而不是字符串 [重复]

如何将元组列表展平为pythonic列表[重复]

将列表转换为元组对[重复]

将列表转换为参数元组[重复]