2017-05-10 7 views
0

Ich habe eine Methode, die Tweets reinigt, die ich von online bekam, aber ich möchte es so ändern, dass es Doppelpunkte und Unterstriche behält. Ich lese die documentation für Regex in Python und es scheint, dass die re-Methode zuerst das Muster findet, dann ersetzt durch Leerzeichen in der "tweet" Variable. Ich verstehe immer noch nicht ganz den ersten Teil, wo es die Muster zu finden gibt Ich verstehe einige Grundlagen wie^ist, wenn etwas mit etwas beginnt, habe ich versucht, den letzten Teil (\w+:\/\/\S+) völlig zu denken, dass war, wo der Doppelpunkt kam, aber Es entfernt immer noch Doppelpunkte. Kann jemand erklären, was jeder 3 Teile des Musterfindungsteils tut?Regex Python entfernen Doppelpunkte und Unterstriche

' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)", " ", tweet).split()) 

Antwort

0

Das Zeichen^hat zwei Bedeutungen in Regexps. Es kann der Anfang der Zeichenfolge sein oder es kann "nicht" bedeuten, wenn zwischen Klammern ([]) steht. In diesem Fall bedeutet das nicht, dass alle in diesem Ausdruck nicht explizit erwähnten Zeichen entfernt werden. Um es nicht Kolon entfernen (:) Sie sollten hinzufügen, dass zur Mitte hin (nicht) Gruppe:

' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t:])|(\w+:\/\/\S+)", " ", tweet).split()) 

Um weiter zu erklären; die erste Gruppe entfernt @ -Referenzen zu anderen, die zweite Gruppe entfernt alle nicht-alphanumerischen Zeichen mit Ausnahme von Leerzeichen und Tabulatorzeichen (und jetzt Doppelpunkt) und die letzte Gruppe entfernt Internetadressen und dergleichen (z. B. starrt auf "http: //" oder "file ://" o.ä).

+0

Vielen Dank! Ich wusste es nicht, hatte zwei Bedeutungen –