2016-03-24 12 views
0

Ich versuche, die Zeichenfolge "IT \ ICCU \ LO1 \ 0834426" aus einer massiven 3 Millionen Zeile Datei zu entfernen. Wenn ich dieses Skript ausführe, wird die Zeichenfolge jedoch nicht entfernt.
Wenn ich das Skript in Pycharm bearbeite, erscheint der String grün mit Ausnahme der Zeichen "\ 0", die schwarz erscheinen. Ist das ein Problem, weil der Backslash ein Escape-Zeichen ist? Hat jemand Ideen, wie das zu lösen ist?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

Sie möchten ein Raw-String-Literal. Aber lesen Sie die Dokumentation zu 'rstrip' - selbst mit einer korrekt gemerdeten Zeichenkette tut es nicht, was Sie denken (es funktioniert mit Zeichensätzen, nicht mit Suffixen). – Cameron

+0

Was Sie tun möchten, ist Re-Modul zu verwenden und Re verwenden und Sie können diese Zeichenfolge für "" ersetzen und Sie sollten in Ordnung sein. Lesen Sie sich das Modul durch, es ist sehr hilfreich. – Jonathan

Antwort

2

Was Sie suchen ist die replace() Funktion und verwenden rohe Strings wie so:

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 gute antwort :) ... (viel besser als meine jetzt gelöscht) –

0

string.rstrip() verwendet wird Leerzeichen am rechten Ende einer Zeichenfolge zu entfernen.

Schauen Sie sich stattdessen string.replace() an.

0

Ich glaube nicht, dass eine rohe Zeichenkette verwenden ist, was die OP erfordert:

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() mit einem String verwendet, wird das gewünschte Ergebnis zu erzielen.
Oder zumindest das ist meine Interpretation.

Verwandte Themen