2017-07-07 63 views
0

我在Python中很新。我正在嘗試訪問xml文件中的數據。 我的XML文件,代碼如下:訪問Python中的字典中的元素

import xmltodict 

#from xml.dom import minidom 

#doc = minidom.parse("staff.xml") 



data = """<Azimuth> 
     <COL_STEP unit="m">5000</COL_STEP> 
     <ROW_STEP unit="m">5000</ROW_STEP> 
     <Values_List> 
     <VALUES>59.9563 53.0871 44.4595 33.8743 21.5482 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>58.4469 51.1869 42.099 31.0545 18.418 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>56.8537 49.1809 39.623 28.139 15.2538 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>55.1672 47.0649 37.0345 25.1409 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>53.3851 44.8373 34.3343 22.0718 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>51.5013 42.4952 31.5308 18.9484 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>49.5128 40.0378 28.6308 15.7878 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>47.4157 37.4668 25.6447 12.609 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>45.2056 34.7844 22.5855 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>42.8812 31.9968 19.4688 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>40.442 29.1107 16.3121 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>37.8884 26.1373 13.134 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>35.2231 23.0883 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>32.4513 19.9792 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>29.5804 16.8268 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>26.6194 13.6499 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>23.5805 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>20.479 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>17.3318 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>14.1568 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     <VALUES>NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN</VALUES> 
     </Values_List> 
    </Azimuth>""" 

data = xmltodict.parse(data, encoding='utf-8') 
p=data['Azimuth']['Values_List'] 
print(type(p)) 

import dict_digger 

print(dict_digger.dig(data, 'Values_List')) 

什麼我試圖存取權限的「值列表」內的23 * 23陣列,但我在努力。有什麼方法可以實現這些價值?

感謝

+0

鍵在字典必須是唯一的,但所有的元素裏面' '''所以你只有一個字典項目。我不知道'xmltodict'如何處理它。 –

+0

此外,我不認爲'xmltodict'試圖處理這樣的空間分隔值(這不是XML方式)。你可以用Python'split'把它分解成一個列表。 –

+0

是否有人熟悉那裏使用的'dict_digger'模塊?似乎有趣/野 – patrick

回答

0

嘗試

p=data['Azimuth']['Values_List']['VALUES'] 

你可能會想矩陣作爲numpy陣列:

import numpy as np 
parsedMatrix = np.array([line.split(' ') for line in p]).astype(float) 
+0

我已經嘗試過,但是這給了我其中的值實際上是空間分離的數組。我關心的是要實現這些價值觀並對其進行處理。謝謝。 –

+0

查看我使用'split'的答案的第二部分。 – LUB

+0

真的很有幫助,非常感謝。其實我對Matlab很熟悉,但對Python並不瞭解。謝謝 –