将列表写入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列时出错[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将 Python 列表写入 csv 中的列

Python:将列表写入 Pandas 中的列

如何将数据从 python 列表中的列和行写入 csv 文件?

将 Python 列表和字典中的数据写入 CSV

将 Python 列表写入 csv 文件

如何将列表列表写入 CSV 文件 Python?