it-swarm.com.de

Wie entferne ich Sonderzeichen außer Leerzeichen aus einer Datei in Python?

Ich habe einen riesigen Textkorpus (Zeile für Zeile) und möchte Sonderzeichen entfernen, aber den Platz und die Struktur der Zeichenfolge beibehalten. 

hello? there A-Z-R_T(,**), world, welcome to python.
this **should? the next line#followed- [email protected] an#other %million^ %%like $this.

sollte sein

hello there A Z R T world welcome to python
this should be the next line followed by another million like this
6
pythonlearn

Sie können dieses Muster auch mit regex verwenden:

import re
a = '''hello? there A-Z-R_T(,**), world, welcome to python.
this **should? the next line#followed- [email protected] an#other %million^ %%like $this.'''

for k in a.split("\n"):
    print(re.sub(r"[^a-zA-Z0-9]+", ' ', k))
    # Or:
    # final = " ".join(re.findall(r"[a-zA-Z0-9]+", k))
    # print(final)

Ausgabe:

hello there A Z R T world welcome to python 
this should the next line followed by an other million like this 

Bearbeiten:

Andernfalls können Sie die letzten Zeilen in einer list speichern:

final = [re.sub(r"[^a-zA-Z0-9]+", ' ', k) for k in a.split("\n")]
print(final)

Ausgabe:

['hello there A Z R T world welcome to python ', 'this should the next line followed by an other million like this ']
11
Chiheb Nexus

Ich denke, NFN Neil Antwort ist großartig ... aber ich würde nur eine einfache Regex hinzufügen, um alle keine Wörter Zeichen zu entfernen, aber es wird Unterstrich als Teil des Wortes berücksichtigen

print  re.sub(r'\W+', ' ', string)
>>> hello there A Z R_T world welcome to python
1
Eliethesaiyan

Erstellen Sie ein Wörterbuch, das Sonderzeichen mit Keine übereinstimmt

d = {c:None for c in special_characters}

Erstellen Sie eine Übersetzungstabelle mithilfe des Wörterbuchs. Lesen Sie den gesamten Text in eine Variable und verwenden Sie str.translate für den gesamten Text.

0
wwii