xml2array в python

#python #matplotlib #lxml

#python #matplotlib #lxml

Вопрос:

the file.xml содержит следующую структуру данных:

 <table>
 <row>
   <x>10</x>
   <t>10:00</t>
</row>
<row>
   <x>20</x>
   <t>10:05</t>
</row>
</table>
  

У меня сотни пар x, t. Мне нужно построить график x против t.
Я был бы благодарен, если вы поможете мне решить проблему с помощью python и matplotlib.

Ответ №1:

 import lxml.etree as ET
import matplotlib.pyplot as plt

text='''
<table>
 <row>
   <x>10</x>
   <t>10:00</t>
</row>
<row>
   <x>20</x>
   <t>10:05</t>
</row>
</table>
'''

def convert_t(text):
    a,b=map(float,t.split(':'))
    return a b/60.0

doc=ET.fromstring(text)
x=[float(x) for x in doc.xpath('//x/text()')]
t=[convert_t(t) for t in doc.xpath('//t/text()')]
plt.plot(x,t)
plt.show()
  
  • Приведенный выше код предполагает 10:05 , что это означает что-то вроде 10 минут, 5
    секунд. Он преобразует это в число с плавающей запятой, используя convert_t .
  • </table> Было добавлено закрытие, чтобы сделать XML допустимым.