将key=“value”字符串转换为di

2024-10-01 15:43:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我想把它变成一个Python dict,一个la:

^{pr2}$

我试着用重新分割在字符串上:

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

我想我会得到一份名单,比如:

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

然后我就可以变成一个口述,但是我得到了:

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

所以,在我遵循重新分割更进一步说,有没有更好的方法来实现我想要做的,和/或如果解决方案涉及重新分割,我如何编写一个正则表达式来拆分任何字符串=""_(其中“”是一个空格字符)或只是"来生成一个包含奇数索引键的列表,以及偶数的价值?在


Tags: 字符串reformatdateversion格式dictla
3条回答

您也可以在一行中不使用re完成此操作:

>>> data = '''author="PersonsName" date="1183050420" format="1.1" version="1.2"'''
>>> {k:v.strip('"') for k,v in [i.split("=",1) for i in data.split(" ")]}
{'date': '1183050420', 'format': '1.1', 'version': '1.2', 'author': 'PersonsName'}

如果值内允许空白,则可以使用以下行:

^{pr2}$

我个人的分析方式是:

import shlex

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

dict(x.split('=') for x in shlex.split(s))
Out[12]: 
{'author': 'PersonsName',
 'date': '1183050420',
 'format': '1.1',
 'version': '1.2'}

使用re.findall()

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

re.findall()当呈现具有多个捕获组的模式时,返回一个元组列表,每个嵌套的元组都包含捕获的组。dict()很高兴地接受这个输出,并将每个嵌套的元组解释为一个键值对。在

演示:

^{pr2}$

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()输出更容易转换为字典。在

相关问题 更多 >

    热门问题