Ich habe einen regulären Ausdruck erstellt, um Tokens in einem deutschen text
, der vom Typ string
ist.Python 2.7 Regex Tokenizer Implementation funktioniert nicht
Mein regulärer Ausdruck funktioniert wie erwartet mit regex101.com. Hier ist ein Link von meiner regex mit einem Beispielsatz: My regex + example on regex101.com
So implementiert ich es in python 2.7
wie folgt aus:
GERMAN_TOKENIZER = r'''(?x) # set flag to allow verbose regex
([A-ZÄÖÜ]\.)+ # abbrevations including ÄÖÜ
|\d+([.,]\d+)?([€$%])? # numbers, allowing commas as seperators and € as currency
|[\wäöü]+ # matches normal words
|\.\.\. # ellipsis
|[][.,;\"'?():-_'!] # matches special characters including !
'''
def tokenize_german_text(text):
'''
Takes a text of type string and
tokenizes the text
'''
matchObject = re.findall(GERMAN_TOKENIZER, text)
pass
tokenize_german_text(u'Das ist ein Deutscher Text! Er enthält auch Währungen, 10€')
Ergebnis:
Als ich das Debuggen dieses fand ich heraus, dass Die matchObject
ist nur eine Liste mit 11 Einträgen mit leeren Zeichen. Warum funktioniert es nicht wie erwartet und wie kann ich das beheben?
Zusatz Hinweis: Sie könnten Ihre Regex mit der Option 're.UNICODE' kompilieren, damit' \ w' Nicht-ASCII-Buchstaben zuordnen kann - schließlich gibt es deutsche Wörter, die andere Akzente als Umlaute enthalten Vermisse diese jetzt. –