Schneller Weg, um alphanumerische und numerische Zeichen in einer Python-Zeichenfolge zu teilen

8

Ich versuche, eine einfache Funktion zum Erfassen von Tippfehlern auszuarbeiten, z. B .:

%Vor%

nach dem Fixieren:

%Vor%

Erster Versuch:

%Vor%

Ergebnis:

%Vor%

Ich denke jedoch, dass dies effektiver gemacht werden könnte, und ich bekomme immer noch schlechte Ergebnisse, wenn ich etwas wie:

versuche %Vor%

Offensichtlich sollte es London und England separat eintragen, aber ich glaube, dass meine Funktion überflickt wird und es einen einfacheren Ansatz gibt

Diese Frage entspricht in gewisser Weise PHP-Frage

    
Hedde van der Heide 13.09.2012, 15:35
quelle

3 Antworten

15

Das Problem ist, dass Pythons re.split() nicht auf Übereinstimmungen von null Länge aufgeteilt wird. Aber Sie können das gewünschte Ergebnis mit re.findall() erhalten:

%Vor%

\d+ entspricht einer beliebigen Anzahl von Ziffern, [^\W\d_]+ entspricht einem beliebigen Wort.

    
Tim Pietzcker 13.09.2012, 15:40
quelle
5

Hier ist ein weiterer Ansatz, falls Sie es vorziehen, sich von Regex fernzuhalten, was manchmal unhandlich sein kann, wenn man nicht vertraut genug ist, um es selbst zu verändern / zu ändern:

%Vor%

gibt zurück:

%Vor%

Der Generator kann auch leicht modifiziert werden, um bei Bedarf keine Leerzeichen zu liefern.

    
hexparrot 13.09.2012 16:56
quelle
3

Sie können diesen Regex anstelle Ihres verwenden:

%Vor%

Dann müssen Sie die Liste filtern, indem Sie leere Strings / nur weiße Strings löschen.

    
Bakuriu 13.09.2012 15:40
quelle

Tags und Links