Python如何将键未加引号的字典格式字符串转换为实际字典
实现方法
可以通过正则表达式给无引号的键补加引号,再配合ast.literal_eval完成转换,该方案不会破坏值内部的逗号等字符。
具体代码实现
import re from ast import literal_eval str_to_convert = "{rpd.col_A : 'Type B', rpd_dev : 'Other, specify', rpd_form : 'Other'}" # 正则匹配所有未加引号的字典键,匹配规则:{/逗号+空格 开头,后跟合法标识符,结尾是空格+冒号 processed_str = re.sub(r'([{,])\s*([a-zA-Z0-9_.]+)\s*:', r'\1 "\2":', str_to_convert) # 转换为字典 result_dict = literal_eval(processed_str) print(result_dict) # 输出:{'rpd.col_A': 'Type B', 'rpd_dev': 'Other, specify', 'rpd_form': 'Other'}
方案说明
- 正则仅匹配
{/,之后、:之前的标识符作为键补加引号,不会匹配字符串值内部的任何内容,因此rpd_dev对应值里的逗号会完整保留 - 用
ast.literal_eval而非eval,避免执行恶意代码的安全风险
内容的提问来源于stack exchange,提问作者Zakyl
相关产品推荐
相关产品推荐

