2017-08-22 2 views
1

Ich bin relativ neu in Python, und ich versuche, eine Zeichenfolge mit Re zu teilen. Ich habe ein wenig recherchiert und bin auf einige Beispiele gestoßen und habe sie ausprobiert. Sie scheinen zu funktionieren, aber mit Einschränkungen.Teilen mit regulärem Ausdruck in Python

Ich verwende ein Wörterbuch mit einem Zeichenfolgenschlüssel, der einem ganzzahligen Wert zugeordnet ist. Ich versuche, ein Gewicht auf jedes Wort anzuwenden, das von dem Integer-Wert abhängt, der mit der Schlüsselzeichenfolge verknüpft ist. Mein Problem ist, dass die Zeichenfolge nicht perfekt formatiert ist und ich es auf Unterstriche (_) sowie Leerzeichen und andere verschiedene Trennzeichen trennen muss. Soweit ich weiß, muss dies mit regulären Ausdrücken geschehen. Mein Stück Code ist wie folgt:

for key, value in sorted_articles.items(): 
    wordList = print(re.split(r'(_|\s|:|)',key)) 

Wenn ich diese ausdrucken, es alles in Ordnung teilt, aber er druckt auch eher die Trennzeichen aus, als sie in der Liste zu ignorieren. Beispielsweise wird die Zeichenfolge "Hello_how are you_" in der Liste als ['Hello', '_', 'how', ' ', 'are', ' ', 'you','_'] gespeichert. Ich bin nicht sicher, warum die Trennzeichen der Liste hinzugefügt werden würden und ich kann nicht herausfinden, wie man es beheben kann. Vielen Dank im Voraus für die Hilfe!

+3

Verwenden Sie 'r '[_ \ s:]'' oder 'r '(?: _ | \ S | :)''. Sobald Sie dem Muster Erfassungsgruppen hinzugefügt haben, sind diese Werte Teil der resultierenden Liste. –

+0

Die erste funktionierte perfekt, danke! Könnten Sie die letztere Lösung erklären? Nur neugierig – kshoe94

+0

Beide sind gleichwertig. Sie teilen sich nur '_', Leerzeichen und': '. –

Antwort

0

können Sie teilen das \W+ Zeichen verwenden, die überhaupt keine Alpha-String Artikel geteilt wird und verwenden |_ speziell für Unterstrichen zu suchen:

for key, value in sorted_articles.items(): 
    wordList = print(re.split('\W+|_',key)) 

Zum Beispiel:

s = "Hello_how are you_" 

print(re.split("\W+|_", s)) 

Ausgang:

['Hello', 'how', 'are', 'you', ''] 
Verwandte Themen