感谢单行成语中的帮助,以有效地执行以下操作。
我有一个由大括号分隔的组的字符串,如下所示:
{1:xxxx}{2:xxxx}{3:{10:xxxx}}{4:xxxx\r\n:xxxx}....
如何将其转换为字典格式?
dict={1:'xxx',2:'xxxx',3:'{10:xxxx}'},4:'xxxx\r\n:xxxx'}
最佳答案
r = """(?x)
{
(\w+)
:
(
(?:
[^{}]
|
{.+?}
)+
)
}
"""
z = "{1:xxxx}{2:xxxx}{3:{10:xxxx}}{4:'xxxx'}"
print dict(re.findall(r, z))
# {'1': 'xxxx', '3': '{10:xxxx}', '2': 'xxxx', '4': "'xxxx'"}
如果您愿意,可以随意转换为单行代码 - 只需从正则表达式中删除 (?x)
和所有空格。
上面只解析了一层嵌套,要处理任意深度请考虑更高级的regex支持递归模式的模块:
import regex
r = """(?x)
{
(\w+)
:
(
(?:
[^{}]
|
(?R)
)+
)
}
"""
z = "{1:abc}{2:{3:{4:foo}}}{5:bar}"
print dict(regex.findall(r, z))
# {'1': 'abc', '2': '{3:{4:foo}}', '5': 'bar'}
关于python - 在python中拆分大括号分组的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16356382/