2016-06-21 114 views
1

我想通過解析字符串解析和創建字典蟒蛇

<brns ret = "Herld" other = "very"> 
<brna name = "ame1"> 
創建字典

我想創建一個具有以下鍵值對的字典:

dict = {'brnsret': 'Herld', 
     'brnsother':'very', 
     'brnaname':'ame1'} 

我有一個工作的腳本,可以處理這個問題:

<brns ret = "Herld"> 
<brna name = "ame1"> 

我的代碼,以生成字典:

match_tag = re.search('<(\w+)\s(\w+) = \"(\w+)\">', each_par_line) 
if match_tag is not None: 


    dict_tag[match_tag.group(1)+match_tag.group(2)] = match_tag.group(3) 

但我該如何調整我的腳本來處理標記中的多個屬性對?

感謝

+0

爲什麼不嘗試用空格拆分輸入並使用list.index()來查找''='',得到索引(比如說a)並用le生成dict英尺和右操作數(即在列表中,a-1,a + 1)等號? (因爲我不熟悉正則表達式) – YiFei

回答

2

另一種選擇和可能,只是爲了教育的原因 - 你可以通過這種串入一個寬鬆HTML解析器BeautifulSoup

from bs4 import BeautifulSoup 

data = """ 
<brns ret = "Herld" other = "very"> 
<brna name = "ame1"> 
""" 

d = {tag.name + attr: value 
    for tag in BeautifulSoup(data, "html.parser")() 
    for attr, value in tag.attrs.items()} 
print(d) 

打印:

{'brnaname': 'ame1', 'brnsother': 'very', 'brnsret': 'Herld'}