2012-03-28 17 views
5

Ich habe eine Zeichenfolge.String zu Liste Umwandlung in Python

s = '1989, 1990' 

Ich möchte, dass konvertieren & i wie wollen Ausgabe mit Python aufzulisten,

s = ['1989', '1990'] 

Gibt es eine schnellste einzeiler Art und Weise für das gleiche?

+0

möglich Duplikat [Wie kann ich eine Zeichenfolge in eine Liste Python aufgeteilt?] (Http://stackoverflow.com/questions/88613/how-do-i-split-a-string-into-a -list-python) – bernie

Antwort

4

Verwenden Sie die split method:

>>> '1989, 1990'.split(', ') 
['1989', '1990'] 

Aber möchten Sie vielleicht:

  1. Leerzeichen entfernen mit replace

  2. Spaltung durch ''

Als solche:

>>> '1989, 1990,1991'.replace(' ', '').split(',') 
['1989', '1990', '1991'] 

Dies wird besser funktionieren, wenn die Zeichenfolge aus Benutzereingaben kommt, wenn der Benutzer vergessen kann Leerzeichen nach einem Komma zu treffen.

+1

"Dies wird besser funktionieren, wenn Ihre Zeichenfolge von Benutzereingaben kommt, da der Benutzer vergessen könnte, Leerzeichen nach einem Komma einzugeben." das ist hilfreich. – self

+0

Vielen Dank für Ihr Feedback, bitte vergessen Sie nicht, [die Frage zu schließen] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work), wenn Sie fertig sind.Dies spart Zeit von anderen, die unbeantwortete Fragen lesen, um jemanden mit einem ungelösten Problem zu finden. – jpic

4

Rufen Sie die split Funktion:

myList = s.split(', ') 
2
print s.replace(' ','').split(',') 

Erste Leerzeichen entfernt, teilt sich dann durch Komma.

8

Verwenden Listenkomprehensionen:

s = '1989, 1990' 
[x.strip() for x in s.split(',')] 

Kurz und einfach.

Zusätzlich war dies oft asked!

+1

Dies ist eine viel bessere Antwort - das Ersetzen aller Leerzeichen könnte die Daten beeinträchtigen, das Entfernen der geteilten Elemente ist eine viel bessere Idee. –

1

Oder Sie können reguläre Ausdrücke verwenden:

>>> import re 
>>> re.split(r"\s*,\s*", "1999,2000, 1999 ,1998 , 2001") 
['1999', '2000', '1999', '1998', '2001'] 

Der Ausdruck \s*,\s* Matches null oder mehr Leerzeichen, ein Komma und null oder mehr Leerzeichen wieder Zeichen.

1

i erstellt generische Methode dafür:

def convertToList(v): 
    ''' 
    @return: input is converted to a list if needed 
    ''' 
    if type(v) is list: 
     return v 
    elif v == None: 
     return [] 
    else: 
     return [v] 

Vielleicht ist es für Ihr Projekt nützlich.

converToList(s)