[英]Python regex search/findall. For a config format
我有以下格式的配置文件
[COMPONENT1]
KEY1=Value
KEY2=Value
KEY3=Value
[COMPONENT2]
KEY1=Value
KEY2=Value
KEY3=Value
KEY4=Value
我在為re.findall()寫單行正則表達式時遇到麻煩,在這里我可以獲取“ COMPONENT”及其相應的“ 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
對時,您才匹配。 key=value
自行上的key=value
對將被忽略,因為它們之前沒有[Section Name]
。 這就是使得使用正則表達式對讀取配置等內容不適當的部分原因。 在構造您的配置文件時會出現一些條件,必須在您的正則表達式中處理它,從而使其變得比任務所需的時間更長或更復雜,或者需要有人維護它時。
ConfigParser是一個python模塊,可讓您輕松讀取.ini樣式的配置文件,我建議嘗試使用它,因為讀取任意key=value
對的大部分艱苦工作已經解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.