在python中将列表写入CSV列时出错

在python中将列表写入CSV列时出错,python,csv,Python,Csv,我想在csv文件的第三列中写入一个列表 list = ['cat', 'dog', 'duck', ..., 'goat'] writer = csv.writer(f) for val in list: writer.writerow([val]) 但是,我得到的输出之间总是有一行空,如下所示 cat dog duck ... goat 我想知道如何使其正确,以及如何将列表放在csv的第三列。带空格 通过将列表参数中的“None”项添加到writerow()中,可以轻松地

我想在csv文件的第三列中写入一个列表

list = ['cat', 'dog', 'duck', ..., 'goat']

writer = csv.writer(f)
for val in list:
    writer.writerow([val])
但是,我得到的输出之间总是有一行空,如下所示

cat

dog

duck

...

goat
我想知道如何使其正确,以及如何将列表放在csv的第三列。

带空格 通过将列表参数中的“None”项添加到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

如果你想要第三列中的值,那么前两列是什么?哦,对不起,这是一个打字错误。这是一张单子。我纠正了它。我希望前两列的数字从零开始。请尝试以下操作:
writer.writerow([val.strip()])
问题是,在两行之间添加了一个额外的回车符,导致它是-
cat\r\r\ndog…
。您是否使用普通文件尝试了代码?它在没有额外换行符的情况下仍然正确地写出结果吗?是的,我试过了,但没有额外的换行符。很好,回答很好。但是,我仍然得到额外的新行prob。要使用常规文件,只需将“tempfile.NamedTemporaryFile('w',delete=False)”替换为“open('temp.csv','w')。您可能没有在windows中尝试。或者您可能没有使用python 3