В настоящее время я пытаюсь извлечь информацию из API Openweather для моего проекта python. Я просто хочу, чтобы погода и местоположение были извлечены из файла xml, я не знаю, как получить именно эту информацию. Я использовал выражения if внутри цикла for для удаления символов в тексте, который я не хочу сохранять, но как это сделать для всей отображаемой информации? есть способ просто извлечь строки, которые я хочу из api? код я использую:Как извлечь информацию из api в python
import requests
print "enter a city"
city = raw_input()
print "enter a country"
country = raw_input()
fh = open('/home/Ricky92d4/weather.txt', 'w')
info = requests.get('http://api.openweathermap.org/data/2.5/weather?q='+city +','+ country +'&mode=xml')
fh.write(info.text)
fh.close()
fl = open('/home/Ricky92d4/weather.txt')
new_city = fl.read()
fl.close()
for line in new_city:
if line.startswith ('<'):
new_city = new_city.replace('<', '')
if line.endswith ('>'):
new_city = new_city.replace('>', '')
if (line.startswith('?')):
new_city = new_city.replace('?xml version="1.0" encoding="utf-8"?', '')
if (line.endswith('/')):
new_city = new_city.replace('/', '\n')
print new_city
Правильное решение - использовать синтаксический анализатор XML. Начальная кривая обучения вернет вам несколько часов, но вы сможете быстро восстановить это, получив навык использования простого, надежного универсального инструмента, который вам понадобится много раз в будущем. – tripleee
Сохранение информации в файл кажется излишним и создаст узкое место ввода-вывода. Просто сохраните структуру XML в памяти ... как только вы разобрались, как ее разобрать. – tripleee
Потому что он не может быть скопирован достаточно: не пытайтесь разобрать xml с регулярным выражением. Просто голова. Взгляните на [Elementree] (https://docs.python.org/2/library/xml.etree.elementtree.html) или [lxml] (http://lxml.de/) – vds