gpt4 book ai didi

python - 在外部文件中存储字典、正则表达式和变量的最佳方式?

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:11 24 4
gpt4 key购买 nike

出于配置目的,如果我在 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))

而且错误通常是相同的,将我的在线搜索指向一个事实,即 regular expressions should not be stored in JSON文件。

json.decoder.JSONDecodeError: Invalid \escape: line 22 column 38 (char 801)

YAML 文件似乎有 similar limitations ,所以我想我不应该那样下去。

现在,我将我的表达式存储在一个单独文件的字典中:

mydict = {"allow": "com\/[a-z]+(?:-[a-z]+)*\?skid\="}

并从我的程序文件加载它:

exec(compile(source=open('expr.py').read(), filename='expr.py', mode='exec'))

print(mydict)

哪个有效并且对我来说没问题 - 但它看起来有点......特别......带有 exec 和 compile。

有什么理由不这样做呢?有没有更好的方法在我可以在我的程序代码中打开/使用的外部文件中存储复杂的数据结构和正则表达式?

最佳答案

您指定的链接是 JSON 规范。据我所知,它没有说明正则表达式。

您似乎在做的是采用有效的正则表达式并将其粘贴到您的 JSON 文件中以供(重新)使用。这并不总是有效,因为必须对某些内容进行转义才能使 JSON 有效。

然而,有一种简单的方法可以将正则表达式插入到 JSON 文件中,使用适当的转义符,方法是制作一个将正则表达式作为命令行参数的小型 Python 程序,然后 json.dump() JSON 文件,或者,使用新的正则表达式加载-更新-转储文件。

关于python - 在外部文件中存储字典、正则表达式和变量的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54388734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com