2010-12-16 172 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()