2016-12-29 1 views
0

XML 파일에서 2 개의 다른 요소를 얻으려고합니다. 분산 형 플롯의 x 및 y로 인쇄하려고합니다. 요소를 그릴 때 다른 요소를 플롯하기 위해 날짜 중 하나만 사용합니다. 날씨 HTML을 가져 와서 XML로 저장하려면 아래 코드를 사용하고 있습니다.python의 목록에서 datetime.datetime을 제거합니다.

 url = "http://api.met.no/weatherapi/locationforecast/1.9/?lat=52.41616;lon=-4.064598" 
     response = requests.get(url) 
     xml_text=response.text 
     weather= bs4.BeautifulSoup(xml_text, "xml") 
     f = open('file.xml', "w") 
     f.write(weather.prettify()) 
     f.close() 

그때 요소와 ('풍속'> 'MPS') 요소와 속성 ('에서') 시간을 얻기 위해 노력하고있어. 그 다음에 x와 y를 산점도로 그려 봅니다.

2 개의 루프에서 2 개의 목록을 만들고 x 및 y로 읽으려고하는데 오류가 있습니다. 에 ValueError를 ("X 및 Y는 동일한 사이즈이어야") 상향 에 ValueError : X 및 Y는 동일한 사이즈이어야

I는 datetime.datetime는리스트 (2016, 12, 22을 출력 그것 때문에 가정있어 , 21, 0), 목록에서 datetime.datetime을 제거하려면 어떻게합니까?

나는 그것을 고칠 수있는 간단한 방법이 있다는 것을 알고 있습니다. 어떤 아이디어라도 좋을 것입니다. 스택에있는 사람들은 코드를 배우는 데 많은 도움이됩니다. 감사합니다

답변

0

간단하게 두 개의 목록 x 축 값과 Y 축 값을 다른과 것은 그것이 당신에게를 제공하기 때문에 기능에게 당신이 XML을 분석 LXML를 사용하는 것이 좋습니다

plt.scatter(list1, list2);

+0

2 개의 목록을 사용하려고했지만 그 질문에 어떤 오류가 있습니까? –

+0

'plt.scatter (x, y)와 plt.show()'를 for 루프에 넣지 마십시오. –

+0

@ M.Man'x.append (t)'에서't'는 무엇입니까? 그것은 또한 당신에게 오류가 발생할 수 있습니다 –

0

흩어 통과를 포함하는 하나를 만들 인생을 훨씬 쉽게 할 수있는 xpath 표현식을 사용할 수있는 능력. 이 경우 모든 시간 엔트리에 windSpeed ​​항목이 들어있는 것은 아닙니다. 그러므로, 관련 시간을 얻으려면 먼저 windSpeed ​​항목을 식별해야합니다. 이 코드는 그렇게합니다. 내가 일반적으로 마주 치게되는 두 가지의 작은 문제가있다. (1) xpath를 사용하기 위해서는 여전히 그것을해야한다. (2) 때로는 코드에 '[0]'이있는 싱글 톤을 기대할 때 목록을 얻습니다. 코드를 대화식으로 작성하는 것이 더 좋습니다.

>>> from lxml import etree 
>>> XML = open('file.xml') 
>>> tree = etree.parse(XML) 
>>> for count, windSpeeds in enumerate(tree.xpath('//windSpeed')): 
...  windSpeeds.attrib['mps'], windSpeeds.xpath('../..')[0].attrib['from'] 
...  if count>5: 
...   break 
...  
('3.9', '2016-12-29T18:00:00Z') 
('4.8', '2016-12-29T21:00:00Z') 
('5.0', '2016-12-30T00:00:00Z') 
('4.5', '2016-12-30T03:00:00Z') 
('4.1', '2016-12-30T06:00:00Z') 
('3.8', '2016-12-30T09:00:00Z') 
('4.4', '2016-12-30T12:00:00Z') 
관련 문제