将带有嵌入括号的字符串转换为字典

mtm*_*tmt 12 python regex dictionary

从字符串构建字典的最佳方法是什么,如下所示:

"{key1 value1} {key2 value2} {key3 {value with spaces}}"
Run Code Online (Sandbox Code Playgroud)

所以键总是一个没有空格的字符串,但值是字符串或大括号中的字符串(它有空格)?

你怎么会把它变成:

{'key1': 'value1',   'key2': 'value2',   'key3': 'value with spaces'}
Run Code Online (Sandbox Code Playgroud)

vks*_*vks 18

import re
x="{key1 value1} {key2 value2} {key3 {value with spaces}}"
print dict(re.findall(r"\{(\S+)\s+\{*(.*?)\}+",x))
Run Code Online (Sandbox Code Playgroud)

你可以试试这个.

输出:

{'key3': 'value with spaces', 'key2': 'value2', 'key1': 'value1'}
Run Code Online (Sandbox Code Playgroud)

在这里re.findall我们提取key和它value.re.findall返回一个包含所有键值dict对的元组的列表.使用元组列表提供最终答案.在这里阅读更多.

  • 这太棒了!如果你能发表一些解释,这将是一个很好的,所以我可以更好地学习和理解这一点.谢谢. (2认同)