2

我正在尝试清理一些损坏的 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)

基本上,我使用 §§§ 作为正确换行符的占位符,消除数据中的所有换行符,然后再次用换行符替换占位符。

它确实有效,但有没有办法更优雅地做到这一点?

4

1 回答 1

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
于 2013-06-29T12:55:47.557 回答