2012-03-28 109 views
5

我有一個字符串。python中的字符串列表轉換

s = '1989, 1990' 

我要轉換的是使用Python &列出我想作爲輸出,

s = ['1989', '1990'] 

是否有同任何一個最快的方式班輪?

+0

可能的重複[如何將字符串拆分爲Python列表?](http://stackoverflow.com/questions/88613/how-do-i-split-a-string-into-a -list-python) – bernie 2012-03-28 15:05:49

回答

4

使用split method

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

但你可能想:使用replace

  • 分裂由

    1. 刪除空格 ''

    這樣:

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

    這將更好地工作,如果你的字符串是來自用戶的輸入,因爲用戶可能會忘記在逗號後打空格。

  • +1

    「如果你的字符串來自用戶輸入,這會更好,因爲用戶可能會忘記在逗號後打空格。」這很有幫助。 – self 2012-03-28 10:28:23

    +0

    感謝您的反饋,請不要忘記在完成後請[關閉此問題](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。這樣可以節省讀者閱讀未解決問題的人的時間,並找到未解決問題的人來幫助 – jpic 2012-03-28 10:29:42

    4

    調用split功能:

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

    首先刪除空格,然後用逗號分割。

    8

    使用列表內涵

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

    短,操作簡便。

    此外,這已多次asked

    +1

    這是一個更好的答案 - 更換所有空間可能會影響數據,剝離拆分項目是一個更好的主意。 – 2012-03-28 10:45:20

    1

    或者你可以使用正則表達式:

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

    表達\s*,\s*匹配零個或多個空白字符,一個逗號和零個或多個空白字符一次。

    1

    我創建了這個泛型方法:

    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] 
    

    或許是爲了你的項目非常有用。

    converToList(s)