我有一个如下格式的配置文件
[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'
我无法制定一个正则表达式,可以显示其他'键=值'对。你知道吗
非常感谢您的帮助。你知道吗
注意:此配置格式无法更改。你知道吗
这不是我建议使用正则表达式的东西。正则表达式可能很好,但当试图处理配置文件之类的内容时,它们对构建您要读取的内容并没有很大帮助。除非您能保证每个相关行的结构都类似于
[Section Name]
或key=value
,和只占用一行,和yadda yadda yadda,否则正则表达式只会使配置文件的解析和使用变得复杂。你知道吗在共享的正则表达式中,仅当且仅当}对被忽略,因为它们前面没有
[Section Name]
后跟key=value
对时才匹配。^它们自己行上的{[Section Name]
。这就是为什么在读取配置时使用正则表达式有点不合适的一部分原因;在构造配置文件时会出现一些条件,这些条件必须在正则表达式中处理,使其比任务所需的或需要维护的时间更长、更复杂是的。你知道吗ConfigParser是一个python模块,允许您轻松地读取.ini样式的配置文件,我建议尝试使用它,因为读取任意
key=value
对的大部分艰苦工作已经解决。你知道吗相关问题 更多 >
编程相关推荐