【问题标题】:Python 3 - Write list containing tuples of integers to CSV [duplicate]Python 3 - 将包含整数元组的列表写入 CSV [重复]
【发布时间】:2017-02-25 01:34:55
【问题描述】:

好的,我有一个程序可以输出包含整数的元组并将它们附加到这样的列表中:

[(0,98,7), (437, 563, 128), (82, 45, 221)...]

我想用这样的 .write() 函数将元组写入一个文件,其中“值”作为存储元组的列表:

output=open("output.txt","w")
for v in range(len(values)):
    print(values[v]) #so it prints each value in the shell for error check
    output.write(values[v])

预期的结果是一个文本文件,其内容如下:

0,98,7
437, 563, 128
82, 45, 221
...

问题是它说它不能将元组写入文件;它要求一个字符串。我尝试使用 .join() 函数和 list() 函数尝试将元组更改为字符串或值列表中的列表。有谁知道我该如何解决这个问题?非常感谢。

【问题讨论】:

  • 您在join 中使用的代码是什么,导致它无法工作的错误是什么?另外,请考虑使用with open('output.txt', 'w') as output_file:...,它更安全,因为它即使出现错误也会关闭文件
  • 1.使用for v in values:。 2. 也许这个output.write(str(v))。 3.不要忘记关闭文件(最后)。
  • 感谢所有帮助我的人;我想我找错地方了,得到了错误的答案……我对 python 比较熟悉,从来没有读过 CSV 模块。非常感谢;信息非常有用!

标签: python python-3.x csv


【解决方案1】:

这正是 csv 模块的用途:

import csv

with open('output.txt','w',newline='') as fou:
  cw = csv.writer(fou)
  cw.writerows(values)

【讨论】:

  • 是的! ','.join(strings) 不是 CSV,滚动你自己的序列化器/解析器是一个糟糕的主意。使用模块。
  • 谢谢@DSM。更新了答案。
  • @Bernie 非常感谢!!!你们俩!!!
  • @DiamondHeart:不客气 :-)
【解决方案2】:

看到有人已经展示了csv的方式,这里没有。

s = [(0,98,7), (437, 563, 128), (82, 45, 221)]
with open('out.txt', 'w') as f:
    for e in s:
        f.write('%s\n' % ','.join(str(n) for n in e))

只需循环写出它们。传递给 join 的集合中的每个元素都应该是一个字符串,因此转换每个值然后使用 join 使逗号分隔的行。

结果

ubuntu@ubuntu:~$ cat out.txt
0,98,7
437,563,128
82,45,221

请注意,您的输出中的逗号后始终没有空格。如果没有他们,让我像第一行一样出局。如果您想要它们,只需更改您的加入字符串 ','.join(etc...) => ', '.join(etc...)

【讨论】:

    猜你喜欢
    • 2016-07-25
    • 2016-06-30
    • 2019-06-22
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 2019-03-09
    • 2016-10-02
    • 2016-05-30
    相关资源
    最近更新 更多