Wenn ich eine Zeichenfolge habe, kann dies sein:

'Hello (Test1 test2) (Hello1 hello2) other_stuff'

Ich würde es gerne in so etwas aufteilen:

split1='hello'
split2='Test1, test2'
split3='Hello1, hello2'
split4='other_stuff'

Und dann werde ich es in eine Variable setzen:

full_split=[split1, split2, split3, split4]

Außerdem wäre die unbekannte Zeichenfolge, wenn am Ende immer wieder Wörter hinzugefügt werden, eine geteilte Variable hinzugefügt wird (split5, split6).

Ich beschäftige mich mit Regex, aber ich importiere keine Module, die nicht mit Python geliefert werden. Wenn ich muss, werde ich.

0
TrevorPeyton 16 Juni 2013 im 18:18

3 Antworten

Beste Antwort

Verwenden von regex, str.split und str.join:

>>> import re
>>> strs = "Hello (Test1 test2) (Hello1 hello2) other_stuff"
>>> [", ".join(x.split()) for x in re.split(r'[()]',strs) if x.strip()]
['Hello', 'Test1, test2', 'Hello1, hello2', 'other_stuff']
4
Ashwini Chaudhary 16 Juni 2013 im 16:03

Dies funktioniert und löschen Sie leere Zeichenfolgen

import re, itertools
strs = 'Hello (Test1 test2) (Hello1 hello2) other_stuff'

res1 = [y for y in re.split(r'\(([^\(]*)\)', strs) if y <> ' ']
print res1     
0
kiriloff 28 Juni 2013 im 08:21

In der Standardbibliothek befindet sich ein re Modul. Sie könnten so etwas tun:

>>> s="Hello (Test1 test2) (Hello1 hello2) other_stuff"
>>> re.findall(r'\w+|\(\w+\s+\w+\)', s)
['Hello', '(Test1 test2)', '(Hello1 hello2)', 'other_stuff']

Tatsächlich hängt dies sehr davon ab, wie Ihre Eingabe aussieht (Leerzeichen? Andere Klammern?), Daher müssen Sie sie möglicherweise an Ihren Fall anpassen.

4
michaelmeyer 16 Juni 2013 im 14:22