2014-11-05 15 views
0

在Python中,什麼是字符串轉換這樣的最有效和最優雅的方式:列表中字符串的形式進入一個真正的列表

「(1,89,67,23)」

到真正的名單?我知道,所有元素都是整數。

+1

從技術上講,當你解釋爲Python文字語法時,你有一個元組,而不是一個列表。 – 2014-11-05 08:41:33

+0

我知道,但我需要名單。我剛剛得到一個像這樣格式化的文件,沒有與Python語法的連接。 – nekomimi 2014-11-05 08:53:34

+0

然後轉換爲列表; 'list(ast.literal_eval(line)))'是最簡單的。 – 2014-11-05 09:44:12

回答

1

用正則表達式:

import re 
l = [int(i) for i in re.findall(r'(\d+)', "(1, 89, 67, 23)")] 
print l 

我使用R只是代碼爲highighting正則表達式。但是這裏有一個很好的解釋:What exactly do "u" and "r" string flags do in Python, and what are raw string literals?

+0

之前的模式是什麼? – nekomimi 2014-11-05 08:58:01

+0

然而,這不會產生*整數*您需要額外的轉換步驟。 – 2014-11-05 09:44:49

+0

改變了它,有沒有更快的方法?正則表達式中的東西? – 2014-11-05 09:50:57

1
>>>> a = "(1, 89, 67, 23)" 
>>> a.strip('()').split(',') 
['1', '89', '67', '23'] 

使用正則表達式:

>>>re.findall('\d+',a) 
相關問題