Python正则表达式搜索/findall。对于配置窗体

2024-09-28 20:19:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下格式的配置文件

[COMPONENT1]
KEY1=Value
KEY2=Value
KEY3=Value

[COMPONENT2]
KEY1=Value
KEY2=Value
KEY3=Value
KEY4=Value

我在为编写单行正则表达式时遇到问题关于芬德尔(),在这里我可以得到“COMPONENT”(s)的列表/元组及其相应的“KEY(n)”-“VALUE”对以进行迭代。你知道吗

到目前为止,我已经尝试了以下正则表达式

with open(conf,"r") as config:    
    match = re.findall(r,"?:\[(\w+)\](?:\s*\n*)(?:(\w+(?:\s*=\s*).+)))", config.read())

它回来了

Match 1
Group1: 'COMPONENT1'
Group2: 'KEY1=VALUE'

Match 2
Group1: 'COMPONENT2'
Group2: 'KEY1=VALUE'

我无法制定一个正则表达式,可以显示其他'键=值'对。你知道吗

非常感谢您的帮助。你知道吗

注意:此配置格式无法更改。你知道吗


Tags: configvalue格式配置文件matchkey2key1单行
1条回答
网友
1楼 · 发布于 2024-09-28 20:19:58

这不是我建议使用正则表达式的东西。正则表达式可能很好,但当试图处理配置文件之类的内容时,它们对构建您要读取的内容并没有很大帮助。除非您能保证每个相关行的结构都类似于[Section Name]key=value只占用一行,yadda yadda yadda,否则正则表达式只会使配置文件的解析和使用变得复杂。你知道吗

在共享的正则表达式中,仅当且仅当[Section Name]后跟key=value对时才匹配。^它们自己行上的{}对被忽略,因为它们前面没有[Section Name]。这就是为什么在读取配置时使用正则表达式有点不合适的一部分原因;在构造配置文件时会出现一些条件,这些条件必须在正则表达式中处理,使其比任务所需的或需要维护的时间更长、更复杂是的。你知道吗

ConfigParser是一个python模块,允许您轻松地读取.ini样式的配置文件,我建议尝试使用它,因为读取任意key=value对的大部分艰苦工作已经解决。你知道吗

相关问题 更多 >