gpt4 book ai didi

python - 用正则表达式构建字典

转载 作者:行者123 更新时间:2023-11-28 19:48:17 29 4
gpt4 key购买 nike

我正在通过串行连接获取一些数据,我想处理这些数据以便我可以用它做更多事情。


我的 Python 脚本获取如下所示的变量:

data = "P600F600"

我的目标是:

finaldata = {
'P': 600,
'F': 600
}

我喜欢正则表达式,而且我的输入格式非常严格,所以我设计了这个 RegEx 来抓取数据:

/([A-Z])(\d+)/

基于我对 Python 的有限了解,我设计了这个。

finadata = eval( '{' + re.sub(r"([A-Z])(\d+)", r"'\1':\2,", data) + '}' )

但这显然是一个可怕且极其 hacky 的解决方案。

最佳答案

在这种情况下,re.findall 似乎真的很有帮助:

>>> import re
>>> re.findall('([A-Z])(\d+)', 'P600F600')
[('P', '600'), ('F', '600')]

碰巧可以直接从这里构建字典:

>>> dict(re.findall('([A-Z])(\d+)', 'P600F600'))
{'P': '600', 'F': '600'}

当然,这会给您留下字符串值而不是整数值。要获得整数,您需要更明确地构造它们:

>>> items = re.findall('([A-Z])(\d+)', 'P600F600')
>>> {key: int(value) for key, value in items}
{'P': 600, 'F': 600}

或者为了 python2.6- 兼容性:

>>> dict((key, int(value)) for key, value in items)
{'P': 600, 'F': 600}

关于python - 用正则表达式构建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34864409/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com