写入csv会将字符串分解为字符

时间:2017-03-01 23:17:15

标签: python csv

我正在尝试写入csv文件,我有一个我想写的硬编码标题:

head = ["Q151", "item time", "deliberativness", "deliberativness time",
        "Q153", "item time", "deliberativness", "deliberativness time"] 

但是当我运行csv编写器时,它会将每个字符串插入到不同的列中,并将列表中的每个项目插入到不同的行中。所以我得到了

Q 1 5 1 
i t e m t i m e

而不是Q151 item time ...

with open('some.csv', 'wb') as f:
    writer = csv.writer(f)
    for r in head:
        writer.writerow(r)

我在python docs中使用了一个简单的writer。我做错了什么?

除了上面说的Q151项目时间以外的结果...

2 个答案:

答案 0 :(得分:1)

您可以使用此代码

with open('some.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerow(first_row)

Writer迭代您的变量并将每个元素写入下一个单元格。 当你给它字符串值时,writer会迭代它。 所以要编写所有行,你可以添加一个循环。

with open('some.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerow(first_row)
    list_of_rows = [['1', '2', '3'], ]
    for row in list_of_rows:
         writer.writerow(row)
    # but better to use writerows
    writer.writerows(list_of_rows)

答案 1 :(得分:0)

你做错了。当你有一个列表/行列表时,你可以使用for循环,并且你想将它们写入你的文件中:

with open('some.csv', 'wb') as f:
    writer = csv.writer(f, fieldnames=head)
    writer.writeheader()