Python 如何在节名称中区分大小写?
我有一个win32应用程序,用户可以通过RDP访问。 每个用户都有自己的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()的选项,它可能
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*\]'))
此解析器应将所有的区段名称视为小写。
根据您的具体需要,您可能需要稍微调整代码