2017-01-14 2 views
0

Ich versuche, ein Textdokument zu nehmen und jedes Wort getrennt in ein anderes Textdokument zu schreiben. Mein einziges Problem ist mit dem Code, den ich manchmal habe die Wörter sind nicht alle basierend auf dem Leerraum geteilt und ich frage mich, ob ich nur .split falsch verwende? Wenn ja, könnten Sie erklären, warum oder was besser?split() spaltet nicht alle Leerzeichen?

Hier ist mein Code:

list_of_words = [] 

with open('ExampleText.txt', 'r') as ExampleText: 
    for line in ExampleText: 
     for word in line.split(''): 
      list_of_words.append(word) 
      print("Done!") 
    print("Also done!") 

with open('TextTXT.txt', 'w') as EmptyTXTdoc: 
    for word in list_of_words: 
     EmptyTXTdoc.write("%s\n" % word) 

EmptyTXTdoc.close() 

Dies ist die erste Zeile in dem Dokument ExampleText Text, wie er in der neu geschaffenen EmptyTXTdoc geschrieben:

Senden
eine persönliche
Aussage
von Forschung
und/oder
akademischen
und/oder
Karriere
Pläne.

+0

Bitte geben Sie einen [mcve] an. –

+0

Verwenden Sie 'line.split ('')' oder 'line.split ('')'? – ImportanceOfBeingErnest

+0

Vielen Dank, dass ich darauf hingewiesen habe, dass ich mit dem Input rumgespielt habe und vergessen habe! Ich hatte vor, line.split() zu verwenden, was das Beispiel hervorbringt, das ich gab. – user3102350

Antwort

1

Verwendung .split() (oder .split(' ') nur Räume) anstelle von .split('').


Bedenken Sie auch die line mit .strip() für jede Iteration der Datei Desinfizieren, da die Zeile mit einem Newline (\n) in seinem Ende akzeptiert wird.

+0

Natürlich kann man Regex verwenden, aber haben Sie irgendeine Erklärung, warum '" eine persönliche ".split (" ")' würde nicht funktionieren, wie erwartet in dem Fall in Frage? – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest Unter "Leerzeichen" versteht man normalerweise Leerzeichen ** und ** Tabulatoren (und normalerweise auch Zeilenumbrüche). Ich beachte nur, dass wenn man keine Regex verwendet, man '.strip' verwenden sollte, um Zeilenumbrüche zu bereinigen. – Uriel

+0

@DSM Danke behoben. – Uriel

0

.split('') Wird kein Leerzeichen entfernt, da zwischen den beiden Apostrophen kein Leerzeichen steht. Du sagst es zu teilen, naja, nichts.

Verwandte Themen