Python 3.2 Ersetzen Sie alle Wörter in einem Textdokument, das eine bestimmte Länge ist?

Ich muss alle Wörter in einem Textdokument ersetzen, das mit einem anderen Wort von Länge 4 ist.

Zum Beispiel, wenn ein Textdokument die Phrase "Ich mag sehr heiße Suppe essen" die Worte "wie", "sehr" und "Suppe" würde mit "etwas" ersetzt werden,

  • Python Ctypes sonderbares Verhalten
  • Warum fügt das Hinzufügen von `--no-update-dependencies` noch mehr Updates mit conda hinzu?
  • Pandas concat / merge und summiere eine Spalte
  • Fehler bei der Verwendung von Tumblelog-Anwendung mit Flasche und MongoEngine
  • Python mit Variablen aus einer anderen Datei
  • Lesen und Schreiben in eine Datei gleichzeitig
  • Dann, anstatt das ursprüngliche Textdokument zu überschreiben, muss es ein neues mit der geänderten Phrase erstellen.

    Hier ist was ich bisher habe

    def replacement(): o = open("file.txt","a") #file.txt will be the file containing the changed phrase for line in open("y.txt"): #y.txt is the original file line = line.replace("????","something") #see below o.write(line + "\n") o.close() 

    Ich habe versucht zu ändern "????" Zu etwas wie

     (str(len(line) == 4) 

    Aber das hat nicht geklappt

  • Numpy Matrix Produkt - spärliche Matrizen
  • Url Struktur und Form Pfosten mit Flasche
  • Importieren von Bibliotheken Ausgabe - "ImportError: Kein Modul mit dem Namen ____"
  • Python Überwachung Fortschritt der Handbremse
  • Kann mir jemand bitte helfen, ein Programm zu schreiben, das Zeilen aus einer Textdatei liest und überprüft? [abgeschlossen]
  • Analysieren einer JSON-Zeichenfolge, die von einem CSV mit Pandas geladen wurde
  • 4 Solutions collect form web for “Python 3.2 Ersetzen Sie alle Wörter in einem Textdokument, das eine bestimmte Länge ist?”

    Zuerst können wir eine Funktion machen, die something zurückgibt something wenn es ein Wort der Länge 4 gegeben hat und das Wort, das es anders gegeben wurde:

     def maybe_replace(word, length=4): if len(word) == length: return 'something' else: return word 

    Jetzt gehst du durch deine Schleife. In jeder Iteration hast du eine Zeile deiner Originaldatei. Lasst uns das in Worte teilen. Python gibt uns die split Funktion, die wir verwenden können:

      split_line = line.split() 

    Die Voreinstellung ist, auf Whitespace zu teilen, was genau das ist, was wir wollen. Es gibt mehr Dokumentation, wenn du es willst.

    Jetzt wollen wir die Liste der Aufruf unserer maybe_replace Funktion auf jedem Wort bekommen:

      new_split_line = [maybe_replace(word) for word in split_line] 

    Jetzt können wir diese zusammen mit der join Methode zusammenführen :

      new_line = ' '.join(new_split_line) 

    Und schreibe es zurück zu unserer Akte:

      o.write(new_line + '\n') 

    So ist unsere endgültige Funktion:

     def replacement(): o = open("file.txt","a") #file.txt will be the file containing the changed phrase for line in open("y.txt"): #y.txt is the original file split_line = line.split() new_split_line = [maybe_replace(word) for word in split_line] new_line = ' '.join(new_split_line) o.write(new_line + '\n') o.close() 

    Dies wird zusätzliche Räume bewahren, die Sie haben, wie andere Lösungen mit str.split() nicht.

     import re exp = re.compile(r'\b(\w{4})\b') replaceWord = 'stuff' with open('infile.txt','r') as inF, open('outfile.txt','w') as outF: for line in inF: outF.write(exp.sub(replaceWord,line)) 

    Dies verwendet reguläre Ausdrücke, um den Text zu ersetzen. Es gibt drei Hauptteile zum regulären Ausdruck, der hier verwendet wird. Der erste entspricht dem Anfang eines Wortes:

     \b 

    Der zweite Teil entspricht genau vier Buchstaben (alle alphanumerischen Zeichen und _ ):

     (\w{4}) 

    Der letzte Teil ist wie der erste, er entspricht dem Ende eines Wortes

     \b 

    Das ist wie Hausaufgaben, also hier sind einige Schlüsselbegriffe.

    Wenn du eine Datei liest, bekommst du lines als strings . Sie können eine line in eine list .split() , indem Sie eine Zeichenfolgemethode mit dem Namen .split() . words = line.split() . Dies schafft eine Liste von Wörtern.

    Nun, eine list ist iterable , was bedeutet, dass Sie eine for-Schleife über sie verwenden können, und eine Operation auf einem Element der list zu einem Zeitpunkt. Sie wollen überprüfen, wie lange das word ist, also müssen Sie über words mit Ihrer Schleife iterieren und etwas damit machen. Sie haben eine Art von nah, um herauszufinden, wie man die Länge eines Wortes mit len(word) zu überprüfen.

    Du brauchst auch einen Platz, um deine endgültigen Informationen zu speichern, während du gehst. Außerhalb der Schleife müssen Sie eine list für Ergebnisse machen, und .append() die Wörter, die Sie überprüft haben, während Sie entlang gehen.

    Schließlich müssen Sie dies für jede line in Ihrer Datei zu tun, was bedeutet, eine zweite für Schleife, die über die Datei iteriert.

     with open('file.txt', 'a') as write_file: with open('y.txt') as read_file: for line in read_file.readlines(): # Replace the needed words line = line.replace('????', 'something') write_file.write(line) 
    Python ist die beste Programmiersprache der Welt.