将列表写入python中的CSV列时出错[重复]
Posted
技术标签:
【中文标题】将列表写入python中的CSV列时出错[重复]【英文标题】:Error in writing a list to a CSV column in python [duplicate] 【发布时间】:2018-02-03 02:45:54 【问题描述】:我想将列表写入 csv 文件的第三列。
list = ['cat', 'dog', 'duck', ..., 'goat']
writer = csv.writer(f)
for val in list:
writer.writerow([val])
但是我得到的输出总是有一行空,如下所示。
cat
dog
duck
...
goat
我想知道如何使它正确以及将列表放在csv的第三列中。
【问题讨论】:
如果你想要第三列的值,那么前两列是什么? 抱歉,打错字了。它是一个列表。我纠正了它。我想让前两列的数字从零开始。 试试这个:writer.writerow([val.strip()])
问题是在行之间添加了一个额外的回车,导致它是 - cat\r\r\ndog....
。
【参考方案1】:
有空格
您可以通过在 writerow() 的列表参数中添加“无”条目来轻松添加空列。下面是一个完整的工作示例:
import csv
import tempfile
list = ['cat', 'dog', 'duck', 'goat']
name = None
with tempfile.NamedTemporaryFile('w', delete=False) as f:
writer = csv.writer(f)
for val in list:
writer.writerow([None, None, val])
name = f.name
with open(name, 'r') as f:
contents = f.read()
print(contents)
结果是:
,,cat
,,dog
,,duck
,,goat
带数字
为了让数字从零开始而不是空白,您可以像这样修改:
import csv
import tempfile
list = ['cat', 'dog', 'duck', 'goat']
name = None
with tempfile.NamedTemporaryFile('w', delete=False) as f:
writer = csv.writer(f)
pos = 0
for val in list:
writer.writerow([str(pos), str(pos+1), val])
pos += 2
name = f.name
with open(name, 'r') as f:
contents = f.read()
print(contents)
print(dir(f))
这会导致以下结果:
0,1,cat
2,3,dog
4,5,duck
6,7,goat
【讨论】:
您是否尝试使用普通文件编写代码?没有额外的换行符,它是否仍然正确地写出结果? 是的,我试过了,我没有得到任何额外的换行符。 很好,很好的答案。但是,我仍然得到了额外的新行概率。 要使用常规文件,只需将“tempfile.NamedTemporaryFile('w', delete=False)”替换为“open('temp.csv', 'w')”即可。 您可能没有在 Windows 中尝试。或者你可能没有使用 python 3以上是关于将列表写入python中的CSV列时出错[重复]的主要内容,如果未能解决你的问题,请参考以下文章