【问题标题】:problem in writing number in csv file using python使用python在csv文件中写入数字的问题
【发布时间】:2021-10-18 20:14:49
【问题描述】:

我有这个字符串数组:

my_array = ['5.0', '6.066', '7.5', '7.83', '9.75']

我想在我的 csv 文件中写入前 3 个项目。

我正在使用此代码

n=0
with open("file.csv",'w',newline="",)as e:
    while n<3:
        writer=csv.writer(e)    
        writer.writerow(my_array[n])
        n=n+1    

输出是:

5,.,0
6,.,0,6,6
7,.,5

但我不想用逗号分隔数字 例如输出必须是:

5.0
6.066
7.5

我该怎么办?

【问题讨论】:

  • 试试正则表达式,在其中搜索“,”,然后用空格“”替换它。
  • @DennisKozevnikoff 或者一开始就不要写逗号。
  • writerow() 想要一个可迭代对象,并且该可迭代对象的每个元素都写为 csv 的一列。因为字符串是可迭代的,所以该字符串的每个元素(字符)都被写入单独的列。要解决此问题,请将仅包含单个字符串的 list 传递给 writerow()

标签: python csv


【解决方案1】:

显然您实际上并不需要 CSV(逗号分隔值)文件,因此不要使用 csv 模块。

只需将列表中的每个字符串写入文件中的单独行。

一些选项是:

with open("file.txt", "w") as f:
    for value in my_array[:3]:
        print(value, file=f)
with open("file.txt", "w") as f:
    f.write("\n".join(my_array[:3]))

【讨论】:

    【解决方案2】:

    writerow() 想要一个可迭代对象,并且该可迭代对象的每个元素都写为 csv 的一列。因为字符串是可迭代的,所以该字符串的每个元素(字符)都被写入单独的列。要解决此问题,请将 list 传递给 writerow(),其中仅包含您的单个字符串

    你可以这样做:

    import csv
    
    my_array=['5.0', '6.066', '7.5', '7.83', '9.75']
    
    with open('example.csv', 'w+') as f:
        writer = csv.writer(f)
        for elm in my_array[:3]:
            writer.writerow([elm])
    

    example.csv的输出:

    5.0
    6.066
    7.5
    

    【讨论】:

    • 带有解释的答案总是比“这样做”的答案更好。 How to Answer
    • @PranavHosangadi 你是对的。感谢您的编辑。
    • 虽然这是csv 模块的正确用法,但对于单列来说它是多余的。
    • @MarkTolonen 你是对的。 OP 可以简单地遍历列表并写入每个元素,并用返回线分隔。
    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 2021-11-27
    • 2013-12-14
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多