python - 将键 ="value"字符串转换为字典

标签 python regex python-2.7 dictionary

我有一个格式如下的字符串:

author="PersonsName" date="1183050420" format="1.1" version="1.2"

我想把它变成一个 Python 字典,a la:

{'author': 'PersonsName', 'date': '1183050420', 'format': '1.1', 'version': '1.2'}

我试过在字符串上使用 re.split 这样做:

attribs = (re.split('(=?" ?)', twikiattribs))

我想我会得到一个像这样的列表:

['author', 'PersonsName', 'date', '1183050420', 'format', '1.1', 'version', '1.2']

然后我可以变成一个字典,但我得到的是:

['author', '="', 'PersonsName', '" ', 'date', '="', '1183050420', '" ', 'format', '="', '1.1', '" ', 'version', '="', '1.2', '"', '']

因此,在我进一步研究 re.split 行之前,通常是否有更好的方法来实现我正在尝试做的事情,和/或如果解决方案涉及 re.split,我如何编写一个正则表达式来实现拆分任何字符串 =""_(其中 "_"是空格字符)或只是 " 以生成列表键在奇数索引中,值在偶数索引中?

最佳答案

使用re.findall():

dict(re.findall(r'(\w+)="([^"]+)"', twikiattribs))

re.findall(),当呈现具有多个捕获组的模式时,返回一个元组列表,每个嵌套元组包含捕获的组。 dict() 愉快地获取该输出并将每个嵌套元组解释为键值对。

演示:

>>> import re
>>> twikiattribs = 'author="PersonsName" date="1183050420" format="1.1" version="1.2"'
>>> re.findall(r'(\w+)="([^"]+)"', twikiattribs)
[('author', 'PersonsName'), ('date', '1183050420'), ('format', '1.1'), ('version', '1.2')]
>>> dict(re.findall(r'(\w+)="([^"]+)"', twikiattribs))
{'date': '1183050420', 'format': '1.1', 'version': '1.2', 'author': 'PersonsName'}

re.split() 的行为也因捕获组而异;如果分组,您拆分的文本将包含在输出中。比较有和没有捕获组的输出:

>>> re.split('(=?" ?)', twikiattribs)
['author', '="', 'PersonsName', '" ', 'date', '="', '1183050420', '" ', 'format', '="', '1.1', '" ', 'version', '="', '1.2', '"', '']
>>> re.split('=?" ?', twikiattribs)
['author', 'PersonsName', 'date', '1183050420', 'format', '1.1', 'version', '1.2', '']

然而,re.findall() 输出更容易转换为字典。

关于python - 将键 ="value"字符串转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228352/

相关文章:

String.contains 的 java 正则表达式

php - 用于验证 ip-list 中的 ip-range 的正则表达式

python - Pandas:根据另一列的匹配项替换列值

python - 如何获得正在运行的 Python 脚本的列表?

python - 根据列的最大值过滤 Pandas 数据框中的行

Python Flask 应用程序管理器

regex - 解释这个 R 正则表达式

python - 如何将c类型和python类型组合成一个结构体?

Python/Pandas - 根据其他数据帧的索引进行过滤

python - 从 Excel 到分割的 Python 结构