我如何正则表达式搜索python值? “”string“”“,”string“,”string“,(tuple),[list],{dict}

时间:2014-02-14 20:20:34

标签: python regex parsing django-settings

我正在尝试从Django settings.py文件中提取变量/值(保留注释,空格等),并使用Python以编程方式将它们移动或附加到另一个文件。总的来说,我正在尝试将设置模块自动拆分为多个文件(不是手动使用文本编辑器)。

如何在这样的文件中找到分配给任何变量的值? - 如果可能的话,以简洁的方式,例如使用正则表达式。

示例变量/值:

DEBUG = True
TEMPLATE_DEBUG = DEBUG
ALLOWED_HOSTS = [
    '*'
]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(PROJECT_PATH, 'database.sqlite'),
    }
}
SECRET_KEY = '#*ji*0hbpj6#4-0=$%bl(z+z)c=pd(rn^9u*1_96f^ba+4w58v'
LONG_STRING_VALUE = \
"""
bla foo bar baz ...
"""
A_TUPLE = (
    '...',
)

备注:

  • 我将文件读作一个长字符串,因此正则表达式匹配可以跨越几行。
  • 无需完全解析/理解值,只需找到结束分隔符。
  • 我想知道Python解释器的代码是否可用(作为Python模块)解析Python代码中的值。有人知道吗?
  • 部分正常工作的代码在GitHub上:DjangoSettingsManager(标识任何变量,直到等号后,截至2014年2月15日)

    r'([ ]*#.*\n)*[ ]*(\A|\b)' + var + r'\s*=\s*\\?\s*'
    

Regular expression visualization

Test this w/ Debuggex

1 个答案:

答案 0 :(得分:0)

使用django.conf.settings模块,例如你可以知道django是处于调试模式还是没有输入:

from django.conf import settings

settings.DEBUG
...

文档here