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,

  • Gibt es Wörterbücher in Javascript wie Python?
  • Python, drucken alle Schwimmer auf 2 Dezimalstellen in der Ausgabe
  • Warum ist OrderedDict im Kamel-Fall benannt, während defaultdict Kleinbuchstaben ist?
  • Wie kann diese Funktion umgeschrieben werden, um OrderedDict zu implementieren?
  • Python-Unicode-Zeichencodes?
  • Numpy.putmask mit Bildern
  • 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

  • Wie kann man Farben für Knoten in networkx python setzen?
  • Nginx bedient meine Flaschen-Website nicht
  • Extrahieren Sie verschiedene Werte aus der Liste der Tupel
  • Ersetzen von Dateinamen mit Python
  • Was macht "\ r" im folgenden Skript?
  • Python - SSL Ausgabe mit Oauth2
  • 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.