2012-03-28 18 views
5

Dizgim var. Ben olarak çıktı istediğiniz piton & kullanarak listelemek için dönüştürmek istediğinizpython'da liste dönüştürmeyi dize

s = '1989, 1990' 

,

s = ['1989', '1990'] 

aynı herhangi hızlı bir liner yolu var mı?

+0

olası yinelenen [Nasıl bir liste Python içine bir dize bölmek mi?] (Http://stackoverflow.com/questions/88613/how-do-i-split-a-string-into-a -list-python) – bernie

cevap

4

Kullanım split method:

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

Ama size isteyebilirsiniz:

  1. kaldırmak tarafından replace

  2. bölünmüş kullanarak boşluklar ''

Gibi: dize kullanıcı girişi geliyorsa kullanıcı virgülden sonra boşluk vurmak unutmak olabileceğinden

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

Bu, daha iyi çalışacaktır.

+1

"Kullanıcı, bir virgülden sonra yere vurmayı unutabileceğinden, dizginiz kullanıcı girdisinden geliyorsa daha iyi çalışır." Bu yararlı. – self

+0

Geri bildiriminiz için teşekkür ederiz, işiniz bittiğinde lütfen [soruyu kapatmak için] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) unutmayın.Bu, çözülmemiş bir soruna cevap bulmak için cevapsız soruları okuyan diğerlerinden zaman kazandıracak – jpic

4

Çağrı split fonksiyonu: İlk boşlukları kaldırır

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

ardından virgül ile ayrılır.

8

Kullanım liste comprehensions:

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

Kısa ve kolay.

Ayrıca, bu birçok kez asked olmuştur!

+1

Bu çok daha iyi bir yanıt - tüm alanların değiştirilmesi verileri etkileyebilir, bölünmüş öğelerin sıyrılması çok daha iyi bir fikir. –

1

Yoksa kullanabilirsiniz düzenli ifadeler:

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

ifadesi \s*,\s* maçlar yine sıfır veya daha fazla boşluk karakterleri, virgül ve sıfır veya daha fazla boşluk karakterleri.

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] 

Belki projeniz için yararlıdır:

1

ben bu jenerik yöntem yarattı.

converToList(s) 
ait
İlgili konular