2017-08-03 1 views
0

Meine Zeichenfolge hat die Form my_str = "2a1^ath67e22^yz2p0". Ich möchte basierend auf dem Muster '^(any characters) teilen und ["2a1", "67e22", "2p0"] bekommen. Das Muster kann auch im vorderen oder hinteren Teil der Zeichenfolge angezeigt werden, z. B. ^abc27e4 oder 27c2^abc. Ich habe versucht re.split("(.*)\^[a-z]{1,100}(.*)", my_str), aber es teilt nur eines dieser Muster. Ich gehe davon aus, dass hier die Anzahl der Zeichen erscheinen, nachdem^nicht größer sein als 100.Wie teile ich Strings basierend auf einem bestimmten Muster mit Python?

+0

Ich denke, Ihre Regex nur komplizierter ist, als es sein muss. 'r" \^[a-z] + 'sollte ausreichen. – brittenb

Antwort

2

Sie nicht regex für einfache String-Operationen benötigen, können Sie

my_list = my_str.split('^') 

bearbeiten können: sorry, ich habe gerade sah, dass Sie nicht nur auf die ^ Zeichen, sondern auch auf Strings folgende teilen möchten. Daher brauchen Sie Regex.

my_list = re.split('\^[a-z]+', my_str) 

Wenn sich das Muster am Anfang oder am Ende der Zeichenfolge befindet, wird ein leeres Listenelement erstellt. Sie können sie mit

my_list = list(filter(None, my_list)) 
+0

Vielen Dank! Wusste nicht, dass es so einfach war haha –

-1

entfernen, wenn Sie regex Bibliothek verwenden möchten, können Sie einfach geteilt durch ‚\ ^‘

re.split('\^', my_str) 

# output : ['2a1', 'ath67e22', 'yz2p0'] 
Verwandte Themen