Python 如何在节名称中区分大小写?

Python 如何在节名称中区分大小写?,python,case-sensitive,configparser,Python,Case Sensitive,Configparser,我有一个win32应用程序,用户可以通过RDP访问。 每个用户都有自己的user\u app.ini文件 在RDP服务器上升级应用程序时,有时需要在每个用户的user_app.ini文件中创建/修改条目。我编写了一个Python脚本来处理这个任务,它使用一些upgrade.ini文件来更新所有user\u app.ini文件,使用ConfigParser模块 我的问题是我的节名称应该不区分大小写,但是ConfigParser对于节是区分大小写的(而对于使用optionxform()的选项,它可能

我有一个win32应用程序,用户可以通过RDP访问。 每个用户都有自己的
user\u app.ini
文件

在RDP服务器上升级应用程序时,有时需要在每个用户的
user_app.ini
文件中创建/修改条目。我编写了一个Python脚本来处理这个任务,它使用一些
upgrade.ini
文件来更新所有
user\u app.ini
文件,使用
ConfigParser
模块

我的问题是我的节名称应该不区分大小写,但是
ConfigParser
对于节是区分大小写的(而对于使用
optionxform()
的选项,它可能不区分大小写)

有人能帮我吗?谢谢

有一个属性可以覆盖。这应该定义一个与节名匹配的正则表达式

您可以传递具有
匹配
方法的任何对象,该方法接受字符串并返回具有
方法的对象,该组方法接受字符串
'header'
作为参数

例如:

class FakeRe:
    def __init__(self, regex):
        self.regex = regex
    def match(self, text):
        m = self.regex.match(text)
        if m:
            return FakeMatch(m)
        return None

class FakeMatch:
    def __init__(self, match):
        self.match = match
    def group(self, name):
        return self.match.group(name).lower()
然后,您可以在创建解析器时设置该属性:

config = ConfigParser()
config.SECTCRE = FakeRe(re.compile(r'\[\s*(?P<header>some regex here)\s*\]')
config=ConfigParser()
config.SECTCRE=FakeRe(重新编译(r'\[\s*(?Psome regex here)\s*\]'))

此解析器应将所有的区段名称视为小写。

根据您的具体需要,您可能需要稍微调整代码