希望从字符串处获得字典的值,该字典采用json格式,在本例中选择密钥作为pp-0e 29,并选择预期输出=E 110‘1000’<代码>e 211>
Python编码
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')错误消息
AttributeError: 'str' object has no attribute 'get'预期结果
'1000'发布于 2021-07-02 05:47:29
这里有一个方法可以做到这一点。首先访问d密钥并剥离AAAAA@##。这将导致有效的JSON,并且可以通过json模块反序列化为python对象。
>>> 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'发布于 2021-07-02 16:43:08
如果json符号字符串的前缀未知,则可以使用re.sub:
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'))输出:
1000https://stackoverflow.com/questions/68220131
复制相似问题