【问题标题】:Separate data with a comma CSV Python用逗号分隔数据 CSV Python
【发布时间】:2020-07-14 01:25:07
【问题描述】:

我有一些数据需要写入 CSV 文件。数据如下

A        ,B    ,C
a1,a2    ,b1   ,c1
a2,a4    ,b3   ,ct

第一列里面有逗号。整个数据都在我想写入 CSV 文件的列表中,以逗号分隔,并且不会干扰 A 列中的数据。我该怎么做?提及delimiter = ',' 将其分为四列。

【问题讨论】:

  • 您的实际列表是什么样的?每行都是一个字符串吗?
  • @DavidMarx 是的。看起来像这样 ['A','B','C']['a1,a2','b1','c1']['a2,a4','b3','ct']
  • @vanandy 你的预期输出是什么?
  • @AvinashRaj 只是为了写入具有正确标题和正确相应列数据的 csv 文件。

标签: python csv delimiter


【解决方案1】:

只需使用来自csv 模块的csv.writer

import csv

data =  [['A','B','C']
         ['a1,a2','b1','c1']
         ['a2,a4','b3','ct']]

fname = "myfile.csv"    
with open(fname,'wb') as f:
    writer = csv.writer(f)
    for row in data:
        writer.writerow(row)

https://docs.python.org/library/csv.html#csv.writer

【讨论】:

  • 文件模式现在应该是'wb' w...(您也可以使用writer.writerows(data) 来避免显式的for 循环)
  • 如何从 csv 文件中获取上述数据列表?
  • @AvinashRaj 如果我正确理解了您的问题,请使用 csv.reader 类。
  • @DavidMarx 谢谢。但我的数据就像 ['A','B','C']['a1,a2','b1','c1']['a2,a4','b3','ct'] 并且是不是您在回答中提到的列表列表,如果这会有所作为,因为那对我不起作用。
  • @vanandy 是字符串吗?
【解决方案2】:

无需使用csv 模块,因为第一列中的“,”已经是您数据的一部分,这将起作用:

with open('myfile.csv', 'w') as f:
    for row in data:
        f.write(', '.join(row))
        f.write('\n')

【讨论】:

    【解决方案3】:

    你可以试试下面的。

    代码:

    import csv
    import re
    with open('infile.csv', 'r') as f:
        lst = []
        for line in f:
            lst.append(re.findall(r',?(\S+)', line))
        with open('outfile.csv', 'w', newline='') as w:
            writer = csv.writer(w)
            for row in lst:
                writer.writerow(row)
    

    输出:

    A,B,C
    "a1,a2",b1,c1
    "a2,a4",b3,ct
    

    【讨论】:

    • 你需要sys做什么?
    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2020-10-14
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多