В целях конфигурации, если я храню «легкое» регулярное выражение в файле JSON
и загружаю его в свою программу на Python, он работает просто отлично.
{
"allow": ["\/word\/.*"],
"follow": true
},
Если я храню более сложное регулярное выражениев файле JSON происходит сбой той же самой программы Python.
{
"allow": ["dcp\=[0-9]+\&dppp\="],
"follow": true
},
Это код, который загружает мой файл JSON:
src_json = kw.get('src_json') or 'sources/sample.json'
self.MY_SETTINGS = json.load(open(src_json))
, и ошибка, как правило, совпадает, указывая мои онлайн-поискитот факт, что регулярные выражения не должны храниться в файлах JSON .
json.decoder.JSONDecodeError: Invalid \escape: line 22 column 38 (char 801)
Файлы YAML, похоже, имеют аналогичные ограничения , поэтому я не должен получатьтаким образом, я думаю.
Теперь я сохранил свое выражение внутри dict в отдельном файле:
mydict = {"allow": "com\/[a-z]+(?:-[a-z]+)*\?skid\="}
и загрузил его из моего программного файла:
exec(compile(source=open('expr.py').read(), filename='expr.py', mode='exec'))
print(mydict)
Что работает и будет хорошо со мной - но это выглядит немного ... особенным ... с exec и compile.
Есть ли причина не делать это таким образом?Есть ли лучший способ хранить сложные структуры данных и регулярные выражения во внешних файлах, которые я могу открыть / использовать в своем программном коде?