2016-03-24 6 views
0

大量の300万行のファイルから "IT \ ICCU \ LO1 \ 0834426"という文字列を削除しようとしています。しかし、このスクリプトを実行すると、文字列は削除されません。
Pycharmでスクリプトを編集しているときに、文字列 "\ 0"を除いて文字列が緑色に表示され、黒く表示されます。バックスラッシュはエスケープ文字なので、これは問題ですか?誰でもこれを解決する方法はありますか?Pythonのrstripバックスラッシュ

with open(f_in, 'r') as fin: 
    with open(f_out, 'w') as fout: 
     for line in fin: 
      if line.rstrip("IT\ICCU\LO1\0834426"): 
       fout.write(line) 
+3

生の文字列リテラルが必要です。しかし、 'rstrip'のドキュメントを読んでください。正しくエスケープされた文字列であっても、それはあなたが思っていることをしません(接尾辞ではなく文字セットで動作します)。 – Cameron

+0

あなたがしたいことは、Reモジュールを使用してre.subを使用することです。あなたはその文字列を ""に置き換えることができます。 reモジュールを読んで、それは十分役立ちます。 – Jonathan

答えて

2

あなたが探していることはreplace()関数であり、そのような生の文字列を使用します。

with open(f_in, 'r') as fin: 
    with open(f_out, 'w') as fout: 
     for line in fin: 
      line = line.replace(r"IT\ICCU\LO1\0834426", ""): 
      fout.write(line) 
+0

笑良い答え:) ...(私の今削除されたものよりはるかに良い) –

0

string.rstrip()は、文字列の右端から空白文字を削除するために使用されます。

代わりにstring.replace()を参照してください。

0

私は生の文字列を使用すると、OPが必要とするものであるとは思わない:

line = "JJJJJJJJJJ\IT\ICCU\LO1\0834426\ZZZZZZZZZ" 
print line.replace(r"IT\ICCU\LO1\0834426",'') 
JJJJJJJJJJ\IT\ICCU\LO1834426\ZZZZZZZZZ 

print line.replace("IT\ICCU\LO1\0834426",'') 
JJJJJJJJJJ\\ZZZZZZZZZ 

文字列でline.replace()を使用して所望の結果を達成します。
少なくともそれは私の解釈です。

関連する問題