2011-06-08 36 views

回答

1

有,但在你的情况下,它会假设A B E R G是变量,是这种情况?
如果情况并非如此,则需要对字符串进行一些额外的格式设置。

这将工作,如果A B E R G设置的变量:
s = eval(s)

,如英文字母必须是字符串,你将不得不做一些正则表达式的加引号字符替换字符的所有地方。

+0

如果字母是字符串,没有理由不使用更安全的[ast.literal_eval](http://docs.python.org/library/ast.html#ast.literal_eval)而不是'eval ',如果s被篡改,它可能会执行任意代码。 – 2011-06-08 12:36:40

0

如果您可以稍微修改字符串,则可以使用JSON模块将字符串转换为列表。

>>> import json 

>>> s = '[["A", "B"], ["E", "R"], ["E", "G"]]' 
>>> array = json.loads(s) 
>>> array 
[[u'A', u'B'], [u'E', u'R'], [u'E', u'G']] 
1

如果ABERG不变量,但只是一个字符串,那么你可以使用下面的代码:

tmp = '' 
for c in s: 
    if c.isalpha(): 
     t+="'%s'"%c 
    else: 
     t+=c 
eval(t) # will give you [['A', 'B'], ['E', 'R'], ['E', 'G']] 

OR:(很丑我知道,但不要打我太多 - 只是experementing)

evel(''.join(map(lambda x: s[x[0]] if not s[x[0]].isalpha() else "'%s'" % s[x[0]], enumerate(map(lambda c: c.isalpha(), s))))) 
相关问题