Ich versuche, die Zeichenfolgen "a" und "b" aus einem Dokument zu entfernen. Folgendes mache ich, aber es funktioniert nicht, weil ich in einer Liste kein Ersetzen verwenden kann.

def filter_ab(filename):
    fileRef=open(filename)
    file_list=fileRef.readlines()
    filter="ab"
    for k in file_list:
        for j in k:
        if j in filter:
          file_list=file_list.replace(j,"")
0
Eddy221 25 Nov. 2013 im 00:48

3 Antworten

Beste Antwort

Können Sie so etwas verwenden:

f1 = open('file1.txt', 'r')
f2 = open('file2.txt', 'w')
for line in f1:
    f2.write(line.replace('a', '').replace('b', ''))
f1.close()
f2.close()
2
4d4c 24 Nov. 2013 im 20:55

Verwenden Sie einfach dies:

def filter_ab(filename):
    lines = []
    with open(filename, "r") as fh:
        for line in fh.readlines():
            line = line.replace("a", "")
            line = line.replace("b", "")
            lines.append(line)
    with open(filename, "w") as fh:
        for line in lines:
            fh.write(line)
0
jazzpi 24 Nov. 2013 im 20:56

str.translate ist für so etwas eigentlich recht praktisch

with open('file1.txt', 'r') as f1, open('file2.txt', 'w') as f2:
  for line in f1:
      f2.write(line.translate(None, 'ab'))
0
iruvar 24 Nov. 2013 im 21:30