2017-11-23 2 views
0

ich eine Textdatei, die wie folgt aussieht:Streifen Sonderzeichen aus Textdatei aber immer wieder neue Linien (Python)

nicht

einmachen nicht

Will nicht

Sollte nicht

Mein Ziel ist es, alle Sonderzeichen aus der Textdatei zu entfernen, während die neue Zeile für jedes Wort beibehalten wird. Ausgabe sollte wie folgt aussehen:

Dont

Cant

Wont

Shouldnt

Ich bin derzeit mit dem folgenden Code:

import re 

class TextCleaner: 
    uncleanText = open("words.txt").read() 
    cleanText = re.sub('[^A-Za-z0-9]+', '', uncleanText) 
    open('words.txt', 'w').write(cleanText) 

Doch diese gibt die folgende: DontCantWontSh ouldnt

Kann ich mein Hauptziel erreichen und gleichzeitig die neuen Zeilen mit Regex beibehalten?

+2

Warum nicht Zeile für Zeile lesen? oder benutze einfach 're (' [^ A-Za-z0-9 \ n] + ',' ', unreinesText) ' –

+0

Du wirfst auch' \ n' weg. Das ist der Newline-Charakter. –

Antwort

1

Sie können \n hinzufügen, um neue Zeilen zu erhalten, oder \s, um alle Leerstellen zu erhalten. Für \s ist es dieser Code:

import re 

class TextCleaner: 
    uncleanText = open("words.txt").read() 
    cleanText = re.sub('[^A-Za-z0-9\s]+', '', uncleanText) 
    open('words.txt', 'w').write(cleanText)