-1

比較的大きなテキスト ファイルから引用符を削除する必要があります。これと一致する可能性のある質問を確認しましたが、テキスト ファイルから特定の行の引用符を削除できません。

これは、ファイルの短いセグメントがどのように見えるかです:

1 - "C1".

E #1 - "C1".

2 - "C2".

1

2

E #2 - "C2".

いただきたい1-"C1"です。に置き換えられc1E #1 - "C1"に置き換えられE c1ます。これらをpythonで置き換えてみましたが、 double が原因でエラーが発生します"'s

私は試した:

input=open('file.text', 'r')
output=open(newfile.txt','w')
clean==input.read().replace("1 - "C1".","c1").replace("E #1 - "C1"."," E c1")
output.write(clean)

私はsedを持っています:

sed 's\"//g'<'newfile.txt'>'outfile.txt'.

しかし、さらに別の構文エラーです。

4

1 に答える 1

0

リテラルの置き換えが確実に必要な場合は、引用符をエスケープするか、単一引用符を使用するだけですreplace('1 - "C1".', "c1")(構文を壊すタイプミスを修正するため)。ただし、これは最初の行でしか機能しないため、ファイル全体を読み取る意味はありません。よりスマートな仕事をするには、次を使用できますre.sub

with open('file.text') as input, open('newfile.txt','w') as output:
     for line in input:
         line = re.sub(r'^(?P<num>\d+) - "C(?P=num)".$',
                       lambda m: 'c' + m.groups()[0], line)
         line = re.sub(r'^E #(?P<num>\d+) - "C(?P=num)".$',
                       lambda m: 'E c' + m.groups()[0], line)
         output.write(line)

コマンドでは、sed単に引用符を削除しようとしているようです:

sed 's/"//g' newfile.txt > outfile.txt
于 2012-06-23T15:18:58.010 に答える