我正在尝试将字符串转换为列表,我尝试过split
和findall
,但没有运气。另外,我想避免for
循环....
样品:
import re
string2list = "[{u'name': u'a', u'number': u'123', u'addr': u'123
sunshine'}, {u'name': u'b', u'number': u'456', u'addr': u'123 sunset'}]"
print re.findall('[^},]+},', string2list)
print re.split('[},]', string2list)
print re.split('[},] + }', string2list)`
所需的输出是原始字符串的列表:
[{u'name': u'a', u'number': u'123', u'addr': u'123
sunshine'}, {u'name': u'b', u'number': u'456', u'addr': u'123 sunset'}]
编辑: Python版本< = 2.7。
编辑2:
这几乎有效,只是缺少}
:
print string2list.replace('[', '').replace(']', '').split('}')
编辑3:
使用eval
。
答案 0 :(得分:1)
正则表达式模块是这项工作的错误工具。
您需要literal_eval
:
from ast import literal_eval
string2list = "[{u'name': u'a', u'number': u'123', u'addr': u'123
sunshine'}, {u'name': u'b', u'number': u'456', u'addr': u'123 sunset'}]"
print literal_eval(string2list)
# [{u'addr': u'123sunshine', u'name': u'a', u'number': u'123'},
# {u'addr': u'123 sunset', u'name': u'b', u'number': u'456'}]