2016-08-01 25 views
1

Ich muss eine Zeichenfolge "Liste" als Eingabe nehmen und es entsprechend formatieren. Hier ist ein Beispiel Eingabe:Eine Zeichenfolge in eine ganze Zahl aufteilen

string = "This is the input:1. A list element;2. Another element;3. And another one."

Und ich die Ausgabe möchte eine Liste in folgendem Format sein:

list " ["This is the input:", "A list element;", "Another element;", "And another one."]

Ich habe versucht, Sie folgendermaßen vorgehen:

list = string.split('(\d+). ')

In der Hoffnung, dass es auf alle Ganzzahlen geteilt werden würde, gefolgt von einem vollen sto p und ein Leerzeichen, aber das scheint nicht zu funktionieren: Es wird nur eine einzelne Elementliste zurückgegeben, die anzeigt, dass keines der Splitkriterien gefunden wurde.

Wer sieht was ich falsch mache?

+0

alecxe hat geantwortet, wie man es macht; Was Sie falsch machen, ist a) 'string.split()' braucht keine regulären Ausdrücke, nur literalen Text, und b) '.' in regex ist ein Sonderzeichen, das zu allem passt, also eine Ziffer gefolgt von * einem Literal dot * benötigt das '.' mit einem Backslash. – TessellatingHeckler

+0

Danke für die Eingabe - ich trete selbst dafür, dass ich dem '.' nicht entfliehen kann, aber es ist irgendwie beruhigend zu wissen, dass es mit' \ d' sowieso nicht funktioniert hätte. –

Antwort

2

können Sie verwenden, um die re.split() method Spaltung von : oder ; gefolgt von einer oder mehreren Stellen durch einen Punkt und ein Leerzeichen folgt:

>>> re.split(r"[:;]\d+\.\s", s) 
['This is the input', 'A list element', 'Another element', 'And another one.'] 

die : und ; in den Spagat zu halten, können Sie ein positive lookbehind check verwenden :

>>> re.split(r"(?<=:|;)\d+\.\s", s) 
['This is the input:', 'A list element;', 'Another element;', 'And another one.'] 
Verwandte Themen