2016-04-03 14 views
2
formatter_fn = lambda sentence: re.sub(r'([^\s\w\.])+', '', sentence).lower() 
formatter_fn('\r\ndirected; by Nolan.') 

Dies gibt die Ausgabe als \r\ndirected by nolan. aber ich will es als directed by nolan.Wie r n Zeichen in regex python

Wie entfernen \r\n in diesem Fall entfernen?

Danke!

+1

Würde '... niedriger(). Lstrip ('\ r \ n')' geeignet sein? Oder könnte das "\ r \ n" irgendwo in der Zeichenkette auftreten? – TigerhawkT3

+0

Es könnte irgendwo in der Zeichenfolge auftreten – dumper

+0

Vielleicht fügen Sie ein '| (\ r \ n)'? – TigerhawkT3

Antwort

1

Versuchen Sie, diese

re.sub(r'[^ \w\.]', '', sentence).lower() 

\s dem Satz entspricht [ \t\n\r\f] aber Sie benötigen nur Leerzeichen (ich glaube). So

wenn Sie

re.sub(r'[^\s\w\.]', '', sentence).lower() 

Es alles akzeptiert wird, außer (space, \t, \n, \r, \f) < - Teil \s, \w und .. Es konnte also \r und \n in Ihrer Zeichenfolge nicht übereinstimmen.

Wenn Sie \t in Ihrem Set enthalten sein, dann können Sie verwenden

re.sub(r'[^ \\t\w\.]', '', sentence).lower() 
+0

Ich benutze das, es funktioniert. aber ich bin neugierig warum 're (r '[^ \ s \ w \.]', '', Satz) .lower()' funktioniert nicht. Wissen Sie ? – dumper

+1

@dumper eine Erklärung in Antwort hinzugefügt – rock321987

+0

@dumper Wenn es mehr Erklärung benötigt, zögern Sie nicht zu fragen und nicht vergessen, es zu akzeptieren, wenn es geholfen hat – rock321987