【问题标题】:Stuck with csv write in Python坚持用 Python 编写 csv
【发布时间】:2020-10-21 10:07:39
【问题描述】:

为什么我的 csv 写入不起作用?这似乎是一个非常简单的代码,但 csv write 要求一个可迭代的。我只需要把 1,2,3 写成一列。

import csv

data = [1,2,3]

output = 'output.csv'

with open(output,'w') as f:
    writer = csv.writer(f)
    for item in data:
        writer.writerow(item)

【问题讨论】:

  • 你见过这个问题吗?我认为作家需要一份清单。 stackoverflow.com/a/39282731/92953
  • 对于 Writer 对象,行必须是字符串或数字的可迭代对象,对于 DictWriter 对象,必须是将字段名映射到字符串或数字的字典(首先通过 str() 传递它们)。 docs.python.org/3/library/csv.html
  • 试试改成writer.writerow([item])
  • 不要过于挑剔,但如果每一行实际上只有一个值,为什么 CSV 会参与其中?对于一致的换行格式?因为你没有将newline='' 传递给open,所以无论如何你都不会得到它。
  • 如果不是 CSV,我可以使用什么?你是在暗示我用 txt 代替吗?

标签: python csv write


【解决方案1】:

您传递的是一个整数,但需要一个列表。

import csv

data = [[1],[2],[3]]

output = 'output.csv'

with open(output,'w') as f:
    writer = csv.writer(f)
    for item in data:
        writer.writerow(item)

【讨论】:

    【解决方案2】:

    我们需要向 CSV 写入器提供一个列表,其中包含 1 个完整行的值。

    例如

    import csv
    
    data = [1,2,3]
    
    output = 'output.csv'
    
    with open(output,'w') as f:
        writer = csv.writer(f)
        writer.writerow(data) # as data includes only 1 row. For multiple rows write every row with a loop
    

    从此代码中,您将获得所需的输出。

    【讨论】:

      猜你喜欢
      • 2012-10-31
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 2016-02-18
      • 2021-08-15
      相关资源
      最近更新 更多