Python中如何将字符串形式的列表/字典内容转换为实际可操作对象
解决方案
这里有两种安全可靠的实现方式,都可以直接把字符串转换成和手动输入完全一致的Python对象:
方法1:使用ast.literal_eval(最推荐,安全不会执行任意代码)
这是Python官方提供的专门用于将Python字面量字符串转为对应对象的工具,不会像eval()一样存在代码注入风险。
代码示例:
import ast a_str = "{'1-3': [], '3-6': [47.4], '6-8': [], '8-12': [], '12-18': [], '18-25': [], '25-35': [], '35-55': [], '>55': []}" # 提取内部字典对象 dict_obj = ast.literal_eval(a_str) # 外层套列表即可得到和手动输入完全一致的结构 a = [dict_obj]
方法2:使用json模块处理(仅适用于无内嵌特殊字符的场景)
你的字符串内容本身符合JSON结构要求,只是默认用了单引号,替换成双引号后就可以用json模块解析:
代码示例:
import json a_str = "{'1-3': [], '3-6': [47.4], '6-8': [], '8-12': [], '12-18': [], '18-25': [], '25-35': [], '35-55': [], '>55': []}" # 替换单引号为双引号后解析 dict_obj = json.loads(a_str.replace("'", '"')) # 套列表得到完全一致的结构 a = [dict_obj]
注意:该方法仅适用于字符串内没有内嵌单引号、转义字符的场景,如果内容结构更复杂,优先使用
ast.literal_eval方法。
内容的提问来源于stack exchange,提问作者Alex Zarubin
相关产品推荐
相关产品推荐

