首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >希望从字典格式的字符串中获取值。

希望从字典格式的字符串中获取值。
EN

Stack Overflow用户
提问于 2021-07-02 05:43:16
回答 2查看 65关注 0票数 0

希望从字符串处获得字典的值,该字典采用json格式,在本例中选择密钥作为pp-0e 29,并选择预期输出=E 110‘1000’<代码>e 211>

Python编码

代码语言:javascript
复制
x = {'d': 'AAAAA@##{"pp-0": "1000", "pp-1": "1001", "pp-2": "1002", "pp-3": "1003", "pp-4": "1004", "pp-5": "1005", "pp-6": "1006", "pp-7": "1007", "pp-8": "1008", "pp-9": "1009", "pp-10": "1010", "pp-11": "1011", "pp-12": "1012", "pp-13": "1013", "pp-14": "1014", "pp-17": "1015", "pp-27": "1016"}'}
x['d'].get('pp-0')

错误消息

代码语言:javascript
复制
AttributeError: 'str' object has no attribute 'get'

预期结果

代码语言:javascript
复制
'1000'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-02 05:47:29

这里有一个方法可以做到这一点。首先访问d密钥并剥离AAAAA@##。这将导致有效的JSON,并且可以通过json模块反序列化为python对象。

代码语言:javascript
复制
>>> tmp = x['d'].removeprefix("AAAAA@##")
>>> # `removeprefix` method added in python 3.9. If you are using python version 
>>> # less than 3.9 you can slice the string instead `x['d'][8:]``
>>> import json
>>> json.loads(tmp).get('pp-0')
'1000'
票数 2
EN

Stack Overflow用户

发布于 2021-07-02 16:43:08

如果json符号字符串的前缀未知,则可以使用re.sub

代码语言:javascript
复制
import json, re
x = {'d': 'AAAAA@##{"pp-0": "1000", "pp-1": "1001", "pp-2": "1002", "pp-3": "1003", "pp-4": "1004", "pp-5": "1005", "pp-6": "1006", "pp-7": "1007", "pp-8": "1008", "pp-9": "1009", "pp-10": "1010", "pp-11": "1011", "pp-12": "1012", "pp-13": "1013", "pp-14": "1014", "pp-17": "1015", "pp-27": "1016"}'}
r = {a:json.loads(re.sub('^[^\{]+', '', b)) for a, b in x.items()}
print(r['d'].get('pp-0'))

输出:

代码语言:javascript
复制
1000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68220131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档