【问题标题】:Python - how to read/parse csv like line?Python - 如何读取/解析 csv 行?
【发布时间】:2013-02-06 14:46:41
【问题描述】:

我已经进行了一些搜索,但大多数答案都是关于阅读完整的 csv 文件,而这些都不像我面临的问题。

我正在尝试使用 urllib2 从网络读取文件:

request = urllib2.Request('http://.../tv.txt')
response = urllib2.urlopen(request)
lines = response.readlines()
for line in lines:
    ...

“行”格式如下所示:

"ABC", "XYZ,MNO", "KLM"
"ABC", "MN"
"ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"

如上所示,这些行实际上不是 CSV 行。列数不断变化。

有没有办法将每一行分成一个列表?期望的结果应该是:

["ABC", "XYZ,MNO", "KLM"]
["ABC", "MN"]
["ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"]

我尝试过使用 line.split(",") 但它无法正确拆分,因为每对双引号内都有逗号。

如果你知道怎么做,请帮助我。非常感谢。

干杯,

PHP-Python-Java-MySQL-新手。

【问题讨论】:

    标签: python parsing csv line


    【解决方案1】:

    使用 csv 模块,它可以满足您的需求。

    yourstring= '"ABC", "XYZ,MNO", "KLM"\n"ABC", "MN"\n"ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"'
    
    import csv
    import io
    
    class MyDialect(csv.Dialect):
        strict = True
        skipinitialspace = True
        quoting = csv.QUOTE_ALL
        delimiter = ','
        quotechar = '"'
        lineterminator = '\n'
    
    
    b = io.StringIO(yourstring)
    r = csv.reader(b, MyDialect())
    
    for i in r:
        print len(i), ':',' @ '.join(i)
    

    【讨论】:

    • 如问题中所述,我尝试过 csv 模块。如果你能指出 csv 模块中有什么功能,那就太好了。我已经尝试在 csv.reader([line]) 中设置行:根据docs.python.org/2/library/csv.html#examples 打印行但没有成功
    • 谢谢。在等待期间,我已将源代码从 CSV 更改为 JSON 格式,因此没有测试您的脚本,但随后会将其标记为答案。
    • 你能补充几行关于默认方言的内容吗?
    【解决方案2】:
    import csv
    import io
    
    input='''"ABC", "XYZ,MNO", "KLM"
    "ABC", "MN"
    "ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"'''
    
    resader = csv.reader(
        io.StringIO(input), 
        delimiter = ',', 
        quotechar = '"', 
        skipinitialspace = True,
    )
    for row in resader:
        print(row)
    

    结果为

    ['ABC', 'XYZ,MNO', 'KLM']
    ['ABC', 'MN']
    ['ABC', '123', '10', 'OPPA GANGNAM STYLE', 'LADY']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2021-03-21
      • 2021-05-18
      • 2019-05-07
      相关资源
      最近更新 更多