2012-06-25 58 views
0

a question on multiple-value elements in a config file(這完全符合我的需要)的答案建議「從配置中解壓字符串」。我閱讀了幾處地方提出的unpacking arguments lists的文檔,但我不明白這與我的問題有何關係。python:將一個字符串解壓到列表

我相信這一定是顯而易見的:有一個字符串str = "123,456",我怎樣才能將其轉換爲列表[123,456](用逗號在字符串中分離出來可能會有所不同元素的個數)

謝謝。

+0

謝謝你的回覆。我用map()函數學了一些東西。另外「str」對於一個函數來說確實是一個糟糕的名字,我通常使用thisString版本(但墨菲法則規定我在全球發佈時使用「str」):) – WoJ

回答

4

你想要一個字符串列表或一個整數列表嗎?

如果你只是想要一個字符串列表,這是非常簡單的:

my_list = my_string.split(',') 

如果您希望將這些轉換爲整數,您需要:

my_list = map(int, my_string.split(',')) 

(另外,不要使用str作爲變量名稱,因爲它會影響內置的str()函數。)

+0

出於好奇,性能方面是否有顯着差異使用'map'還是簡單地使用我提供的語法? – pcalcao

+0

不是。說實話,我通常自己使用列表理解,但這次鍵入'map'是因爲鍵入:-)更快 –

5
[int(x) for x in str.split(",")] 

你基本上將函數int通過您的字符串的分割產生的每一個元素。

簡單地說str.split(',')的結果是["123","456"]

正如丹尼爾羅斯曼指出的那樣,您應該注意不要使用無意中掩蓋內置方法的變量或方法名稱,例如str

0

儘管我同意其他答案,但您也應該在inva情況下處理異常假設數字的蓋子字符串表示。以下面的代碼片段爲例:

number_string = "123,456,x21" 
delimiter = "," 
number_list = [] 
for item in number_string.split(delimiter): 
    try: 
     my_num = int(item) 
     number_list.append(item) 
    except ValueError, e: 
     # you can choose to just pass or handle the error like so 
     print "Skipping %s: %s" % (item, e.message) 

只是一個想法。祝你好運!

相關問題