python - 用Python编写csv文件: unwanted commas appear

标签 python csv

我正在尝试使用以下代码将字典值列表提取到文件中:

import csv

def function(file, output, deli = ','):

    dictionary = dict()
    with open(file, 'r') as source, open(output, 'w') as outp:
        data = csv.reader(source)
        line0 = next(data)
        i = 0
        for element in line0:
            dictionary[i] = element
            i += 1
        my_writer = csv.writer(outp)
        for element in dictionary.values():
            print(element)
            my_writer.writerow(element)

if __name__ == '__main__':
    from sys import argv
    if len(argv) == 2:
        function(argv[1])
    elif len(argv) == 3:
        function(argv[1], argv[2])
    elif len(argv) == 4:
        function(argv[1], argv[2], argv[3])

    print("ok")

要在 shell 上运行此代码,我使用以下命令: python function.py 输入输出

但是,尝试使用 csv 文件,例如: 阿尔法、贝塔、 Gamma 、德尔塔

我得到以下结果:

a,l,p,h,a

 ,b,e,t,a

 ,g,a,m,m,a

 ,d,e,l,t,a

我尝试将分隔符更改为“”,但使用空格而不是逗号得到了相同的结果。

我错过了什么吗?

最佳答案

问题出在行

for element in dictionary.values():
    print(element)
    my_writer.writerow(element)

来自 docs writerow 的参数应该是对象列表。在你的例子中,参数是一个字符串(它是可迭代的)。 所以你实际上在做的是 my_writer.writerow("alpha") ,它被写成 a,l,p,h,a

你应该简单地这样做

my_writer.writerow(element.values())

此外,您还会得到前导逗号,因为您的 CSV 字符串是 alpha, beta, gamma。因此,当分割发生时,元素为['aplha','beta','gamma',]。您可以使用 strip() 删除它们

关于python - 用Python编写csv文件: unwanted commas appear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17391376/

相关文章:

python - 排序可以连接形成多边形的打乱点(在 python 中)

python - elasticsearch-py 和多处理

sqlite - 导出不带 col.names 的 CSV

python - 如何在Python中将lxml etree列表保存到csv

mysql - 以带有标题的 CSV 格式导出 SQL 表

python - 更新现有的 virtualenv 以使用 Python 3.6

python - 连接两个类对象 - Python

Python:元素明智除法运算符错误

mysql - 用远程服务器上的 csv 文件的内容替换 MySQL 表的内容

windows - 从excel中删除大量行