簡體   English   中英

Python regex搜索/ findall。 對於配置格式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM