【问题标题】:Python 3.4 writing a list to a csvPython 3.4 将列表写入 csv
【发布时间】:2014-09-21 06:14:21
【问题描述】:

我无法将列表写入 csv。我当前的代码将列表(由字符串组成)写入文件,每个字符之间有空格。这就是我正在处理的问题,问题很可能出在最后 3 或 4 行:

import csv
import sys
import collections

c1 = set()
c2 = set()
c3 = set()

new=(r'file')
old=(r'file2')

with open(new, 'r') as newfile:
    newreader = csv.reader(newfile, delimiter=(','))
    for row in newreader:
        c1.add(row[0])

with open(old, 'r') as oldfile:
    oldreader = csv.reader(oldfile, delimiter=(','))
    for row in oldreader:
        c2.add(row[0])

c3=c2-c1
c1=c2|c3
print(c1)
print(c2)
print(c3)

with open (r'csv1.csv', 'w', newline='') as write_file:
    write=csv.writer(write_file, delimiter=' ')

    write.writerows(list(c1))

提前感谢您的帮助。

【问题讨论】:

  • 你有输入和想要的输出吗?
  • c1 不是列表,也不是列表列表。你有在这里。
  • 您应该向我们展示打印...尤其是 c1 打印...
  • 我想将集合 c1 写入文件 csv1。
  • @RonTheBear: 你需要一个列表列表才能让writerows() 工作;你必须在这里做write.writerows([r] for r in c1)

标签: python csv python-3.x


【解决方案1】:

writer.writerows()(复数,带有s),接受一个序列的序列;每个嵌套序列都是一行有列。

另一方面,您的集合不是这样的嵌套结构。使用生成器表达式生成一个:

with open (r'csv1.csv', 'w', newline='') as write_file:
    write=csv.writer(write_file)
    write.writerows([r] for r in c1)

这会生成每行一列的列表。由于只有一列,因此您将分隔符设置为什么并不重要。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 2013-07-16
    • 2012-01-02
    • 1970-01-01
    相关资源
    最近更新 更多