2016-03-24 12 views
0

"IT \ ICCU \ LO1 \ 0834426" dizesini devasa 3 milyon satırlık bir dosyadan kaldırmaya çalışıyorum. Ancak, bu betiği çalıştırdığımda dizeyi kaldırmaz.
Komut dosyasını Pycharm içinde düzenlerken, siyah görünen "\ 0" karakterleri dışında dize yeşil görünür. Bu bir problem mi, ters eğik çizgi bir kaçış karakteri mi? Bunu çözmek için herhangi bir fikri olan var mı?Python rstrip backslash

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

Ham bir dize değişmezini istiyorsunuz. Ancak, "rstrip" belgelerini okuyunuz - doğru bir şekilde çıkarılan bir dizeyle bile, düşündüğünüzü yapmaz (karakter kümeleriyle çalışır, sonek değil). – Cameron

+0

Ne yapmak istiyorsunuz Re modülü kullanın ve re.sub kullanın ve "" için bu dizinin yerini alabilir ve iyi olmalı. Yeniden modül üzerinden okuyun, bu çok yardımcı olur. – Jonathan

cevap

2

Ne aradığınız replace() fonksiyonudur ve böylece gibi ham dizeleri kullanın:

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

lol iyi cevap :) (şimdi silinmiş olandan çok daha iyi) –

0

string.rstrip() bir dize sağ ucundan boşluk karakterlerini şerit kullanılır.

Bunun yerine string.replace() yöntemine bakın.

0

Ben çiğ dizesini kullanarak OP gereği budur sanmıyorum:

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 

istenilen sonucu elde edecek bir dize ile line.replace() kullanarak.
Ya da en azından bu benim yorumum.