【问题标题】:Save list of ordered tuples as CSV [duplicate]将有序元组列表保存为 CSV [重复]
【发布时间】: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

标签: python csv tuples


【解决方案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
    猜你喜欢
    • 2021-03-11
    • 1970-01-01
    • 2016-07-25
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    相关资源
    最近更新 更多