拆分字符串但分隔符

时间:2017-08-03 16:56:24

标签: python regex python-2.4

我正在尝试将字符串转换为列表,我尝试过splitfindall,但没有运气。另外,我想避免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

1 个答案:

答案 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'}]