如何将数组的字符串版本转换为实际数组?

时间:2011-06-08 10:30:09

标签: python

s = "[[A, B],[E,R], [E,G]]"

是否有内置方法将此字符串转换为数组? (S [] [])

3 个答案:

答案 0 :(得分:1)

有,但在你的情况下,它会假设A B E R G是变量,是这种情况吗?
如果不是这种情况,您需要使用字符串进行一些额外的格式化。

如果设置了变量A B E R G,这将有效:
s = eval(s)

如果字母必须是字符串,则必须使用某种正则表达式来替换所有出现的字符和引用的字符。

答案 1 :(得分:1)

如果A B E R G不是变量而只是一个字符串,那么您可以使用以下代码:

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']]

或者:(非常难看我知道,但不要打扰我太多 - 只是进行实践)

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)))))

答案 2 :(得分: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']]