2011-06-08 47 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))))) 
相關問題