我正在尝试清理一些损坏的csv文件。一个问题是它们在数据字段中包含换行符,从而将一个数据集分成两部分。我正在寻找一条python代码,如果不跟随8位数字,它们就会消除换行符。到目前为止我的代码:
filetoparse = open('test.csv', encoding='utf-8')
data = filetoparse.read()
data = re.sub(r'\n(\d{8})',r'§§§\1',data)
data = re.sub(r'\n',r'',data)
data = re.sub(r'§§§','\n',data)
基本上我使用§§§作为正确换行的占位符,消除数据中的所有换行符,然后再次用换行符替换占位符。
它确实有效,但有没有办法更优雅地做到这一点?
答案 0 :(得分:1)
data = re.sub(r'\n(?!\d{8})', '', data)
例如,
import re
data = '''
12345678 foo
bar
baz
12345678 foo
'''
data = re.sub(r'\n(?!\d{8})', '', data)
print(data)
产量
12345678 foobarbaz
12345678 foo