【问题标题】:Writing csv of list of lists with tuples用元组编写列表列表的csv
【发布时间】:2013-12-03 15:05:40
【问题描述】:

我有这个数据 -

data = [[(1,2)], [(1,2)], [(1,2)]]

内部列表中的元组是坐标。

我试过了 -

>>> with open("file.csv", "wb") as afile:
...   writer = csv.writer(afile)
...   writer.writerows(data)

文件包含此输出 -

"(1, 2)"
"(1, 2)"
"(1, 2)"

我尝试使用这个从这个文件中读取 -

print [row for row in csv.reader(open("file.csv", "rb"))]

给我[]

并且内部列表中可以有多个元组。
如何将其写入 csv 文件,以便另一个 python 程序可以读取它?

【问题讨论】:

  • 您的意思是从 csv 阅读器中读取,您可以稍后在 python 中读取它,如果您需要它?还是说openoffice可以读?
  • 我提出一个实验。要确定 csv 阅读器是否可以读取您的输出,请实例化一个 csv 阅读器并将您的输出提供给它,然后查看它是否有效。
  • 如果每个列表中有多个元组会发生什么?
  • 当我在 Ubuntu 12.04 上的 Python2.7 中运行您的确切代码时,我得到以下输出:[['(1, 2)'], ['(1, 2)'], ['(1, 2)']]
  • @svineet 如果它在 CSV 中很重要,我猜你应该能够告诉我们它的外观也很重要 :)

标签: python list csv tuples


【解决方案1】:

我想这可能是你想要的。我将数据更改为在其中一个内部列表中有多个元组,并具有更多唯一值来帮助进行故障排除。重要的一点是您必须传递writerows() 一个字符串或数字序列(或者显然是生成此类内容的生成器表达式)。

import csv

data = [[(1,1)], [(1,2), (3,4)], [(1,3)]]

with open("file.csv", "wb") as afile:
    writer = csv.writer(afile)
    writer.writerows((coord for coord in data))

print [row for row in csv.reader(open("file.csv", "rb"))]

输出:

[['(1, 1)'], ['(1, 2)', '(3, 4)'], ['(1, 3)']]

【讨论】:

  • 可能。或者元组的每个项目应该是一个单独的列,这样第一行和第三行有两个,第二行有四个......但是,OP 在确切的规范上并不是很明确。
【解决方案2】:

也许是这样的?

#!/usr/local/cpython-3.3/bin/python

import csv

data = [[(1,2)], [(1,2)], [(1,2)]]

with open("file.csv", "w") as afile:
    writer = csv.writer(afile)
    for sublist in data:
        writer.writerow(sublist[0])

【讨论】:

  • 你不懂。内部列表中可以有多个元组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
相关资源
最近更新 更多