2

破損した csv ファイルをクリーンアップしようとしています。1 つの問題は、データ フィールド内に改行が含まれているため、1 つのデータ セットが 2 つに分割されることです。改行の後に8桁が続かない場合に、改行を削除するpythonコードを探しています。これまでの私のコード:

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 に答える