【问题标题】:Remove line break inside line row from CSV with regular expression使用正则表达式从 CSV 中删除行内的换行符
【发布时间】:2013-11-06 06:21:36
【问题描述】:

你好,我有这段文字:

1,0.00,,2.00,10,"Block. CertNot Valid.
Query with me",2013-06-20,0,0.00

这是 CSV 文件中的两行,但实际上是一行数据,我想删除换行符,并使用正则表达式将此行放在一行中。

我试过了:(\")(.*)(\n)(.*)(\"),但它不起作用。

【问题讨论】:

  • 为什么不直接使用csv 模块来阅读这个?它会正确处理换行符。

标签: python regex csv


【解决方案1】:

不要。 不需要删除换行符。

使用csv module 读取CSV 文件,它会正确处理换行符:

import csv

with open(csvfilename, 'rb') as infile:
    reader = csv.reader(infile)
    for row in reader:
        print repr(row[5])

将打印:

'Block. CertNot Valid.\nQuery with me'

为那一行。

这行得通,因为该列被正确引用。

【讨论】:

    【解决方案2】:

    您可以在这里查看结果:https://www.debuggex.com/r/2_X5N-wTLZ2laJKh

    控制台输出:

    >>> regex = re.compile("\"(.+?)\"",re.MULTILINE|re.DOTALL|re.VERBOSE)
    >>> regex.findall(string)
    [u'Block. CertNot Valid.\nQuery with me', u'test\naaa', u'bbb\nvvvv']
    

    而“字符串”的值为:

    1,0.00,,2.00,10,"Block. CertNot Valid.
    Query with me",2013-06-20,0,0.00
    
    1,0.00,,2.00,10,"test
    aaa",2013-06-20,0,0.00
    
    1,0.00,,2.00,10,"bbb
    vvvv",2013-06-20,0,0.00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多