Python 存储在json中的正则表达式未进行解析

Python 存储在json中的正则表达式未进行解析,python,json,regex,Python,Json,Regex,我有一个JSON dict,其中包含两个正则表达式,用于说明如何格式化字符串 { "codes": { "ed_code": "r'(\\D{3})(\\d{3})(\\d*)'", "ed_pattern": "'\\1_\\2'" } } 在Python中,我希望根据config.json文件中的规则格式化字符串 import json _CONFIG_FILE = "config.json" _CONFIG = json.load(ope

我有一个JSON dict,其中包含两个正则表达式,用于说明如何格式化字符串

{
    "codes": {
        "ed_code": "r'(\\D{3})(\\d{3})(\\d*)'",
        "ed_pattern": "'\\1_\\2'"
    }
}
在Python中,我希望根据config.json文件中的规则格式化字符串

import json

_CONFIG_FILE = "config.json"
_CONFIG = json.load(open(_CONFIG))

a="XYZ290290781"
code = _CONFIG['codes']['ed_code']
pattern= _CONFIG['codes']['ed_pattern']
ed_format = re.sub(code,pattern,a)

打印ed_格式将返回x的精确值。它应该返回
XYZ_290
。我认为代码和模式没有正确地从JSON文件中传递。我这样想对吗?如何修复此问题?

您需要从json文件中删除额外的符号(r)。要做到这一点,只需:

a="XYZ290290781"
code = _CONFIG['codes']['ed_code'].strip("r").strip("'")
pattern= _CONFIG['codes']['ed_pattern'].strip("'")
ed_format = re.sub(code,pattern,a)

您需要从json文件中删除额外的符号(r)。要做到这一点,只需:

a="XYZ290290781"
code = _CONFIG['codes']['ed_code'].strip("r").strip("'")
pattern= _CONFIG['codes']['ed_pattern'].strip("'")
ed_format = re.sub(code,pattern,a)

我认为这是由于字符串在JSON中的编码方式有误,您会注意到它们在两组引号中。因此,如果您控制了JSON,请在那里更改它,否则可以执行以下操作来恢复原始python表示

import ast
code = ast.literal_eval(_CONFIG['codes']['ed_code'])
pattern= ast.literal_eval(_CONFIG['codes']['ed_pattern'])

我认为这是由于字符串在JSON中的编码方式有误,您会注意到它们在两组引号中。因此,如果您控制了JSON,请在那里更改它,否则可以执行以下操作来恢复原始python表示

import ast
code = ast.literal_eval(_CONFIG['codes']['ed_code'])
pattern= ast.literal_eval(_CONFIG['codes']['ed_pattern'])

是的!这就解决了!!首先删除json目录中的r'值得吗?是的!这就解决了!!首先删除json目录中的r'值得吗??