2016-02-10 34 views
0

我有一個列表(見下文),我想只提取必要的組件來表示的格式的地址「街道和號碼,城市PIN,國家」提取所需的列表的一部分 - PYTHON

my_list = ['AddressLanguage="eng" ISO="IL" Country="India" City="chennai" Street="XyZ street" HouseNo="3" ZIP="16940"/>\n', 'AddressLanguage="eng" ISO="IL" Country="ISRAEL" City="Madurai" Street="cvbd ROAD " HouseNo="1" ZIP="75140"/>\n']

所需的輸出是[XyZ street 3, 16940 chennai, India ; cvbd ROAD 1, 75140 Madurai, ISREAL]

另外 'my_list' 並不總是在相同的格式。有時它不會有'HouseNo'或訂單可能會改變。所以我只想提取出所需的組件,如街道和號碼,城市個人識別號碼以及列表中的國家,並按照上述順序輸入。

我試過[''.join(n for n in i if n in 'Country') for i in my_list]但是這會從完整列表中刪除字母(國家)。

任何幫助將真正的讚賞。 PS:我是新來的python,任何建議在學習python會真的很有幫助。 在此先感謝。

+1

輸入數據不是XML數據嗎?如果是,請[使用專用的XML解析器](https://docs.python.org/2/library/xml.etree.elementtree.html)。 –

+0

是的,我的輸入數據是XML。我會嘗試XML解析器。謝謝 – user8162

回答

1
def getAddress(rawList): 
    toRet = [] 
    for item in rawList: 
     item = item.remove("/>\n") 
     rawArr = item.split(" ") 
     tempDict = {} 
     for x in rawArr: 
      y = x.split("=") 
      y[1] = y[1:] 
      y[1] =y[:- 1] 
      tempDict[y[0]] = y[1] 
     addr = [tempDict["Street"], tempDict["HouseNo"], tempDict["City"], tempDict["Zip"], tempDict["Country"]] 
     toRet.append(' '.join(addr)) 
    return toRet 

如果您的列表是您指定的,您需要:

  1. 列表中的每個元素轉換爲格式爲「鍵=值」的字符串數組

  2. 做一個字典從這些元素,使用「鍵」作爲關鍵和「值」作爲價值。

  3. 從此字典中獲取所需的最終地址。

+0

使用Xml樹很容易解決了這個問題,因爲它在最後創建了字典。 – user8162