2010-12-16 194 views
2

如何將字符串轉換爲列出轉換字符串列表

str = '[([email protected], amit, laspal,1,100,50), 
     ([email protected],None,None,None,None,None), 
     ([email protected],laspal, amit,None,None,None)]' 

我想要得到的名單內的元組。 所以我的新名單將是:

list =[([email protected], amit, laspal,1,100,50), 
     ([email protected],None,None,None,None,None), 
     ([email protected],laspal, amit,None,None,None)] 

我可以用戶eval(string)但並不對我的情況下工作。

謝謝。

+1

該字符串太靠近Python或JSON,因爲它不是它,但它不是。我猜你正在做一些簡單的事情,但方式非常複雜。可能你最好問你如何解決你的實際問題,用你正在做的事情的代碼示例,而不是隻是尋求你正在努力解決的具體問題的幫助。這聽起來像你試圖以一種錯誤的方式解決問題。 此外,你想要的結果是一個語法錯誤,所以這顯然不是你想要的。 – 2010-12-16 09:54:34

+0

噢,好的。我明白了。我得到的繩子不在我手中。更改字符串後,我可以使用ast.literal_eval(string)來達到我的目的。 – laspal 2010-12-16 10:00:59

+3

並且不要將值分配給內建函數,例如str和list。 – 2010-12-16 11:48:08

回答

0

我會說,使用正則表達式。

import re 
p = re.compile('(([\[email protected]]+),(\w+),(\w+),(\d+),(\d+))') 
f = p.finditer("yourstring") 
result = [] 
for e in f: 
    result.append(e.groups()[1:]) 
0

解決了類似的一個a while back,但問題是沒有相當重複。您也可以在那裏工作ast.literal_eval()