How to fetch values in quotes using python?
xml_strg = """<?xml version="1.0"?>
<xml_api_reply version="1">
<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" >
<forecast_information>
<city data="Baton Rouge, LA"/>
<postal_code data="baton rouge,la"/>
<latitude_e6 data=""/>
<longitude_e6 data=""/>
<forecast_date data="2011-02-22"/>
<current_date_time data="2011-02-22 20:06:59 +0000"/>
<unit_system data="US"/>
</forecast_information>
<current_conditions>
<condition data="Cloudy"/>
<temp_f data="72"/>
<temp_c data="22"/>
<humidity data="Humidity: 73%"/>
<icon data="/ig/images/weather/cloudy.gif"/>
<wind_condition data="Wind: N at 5 mph"/>
</current_conditions>
</weather>
</xml_api_reply>
"""
import xml.etree.cElementTree as et
root = et.fromstring(xml_strg)
result = []
for elem in root.find('./weather/current_conditions'):
if elem.tag in ('humidity', 'icon', 'wind_condition'):
result.append(elem.get('data'))
print result
['Humidity: 73%', '/ig/images/weather/cloudy.gif', 'Wind: N at 5 mph']
'humidity data="Humidity: 73%" icon data="/ig/images/weather/cloudy.gif" wind_condition data="Wind: N at 5 mph"'
import re
re.findall('"(.+?)"', in_string)
#!/usr/bin/env python
from xml.etree.ElementTree import XML
import sys
data = """<?xml version="1.0"?>
<xml_api_reply version="1">
<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
<forecast_information>
<city data="Baton Rouge, LA"/>
<postal_code data="baton rouge,la"/>
<latitude_e6 data=""/>
<longitude_e6 data=""/>
<forecast_date data="2011-02-22"/>
<current_date_time data="2011-02-22 20:06:59 +0000"/>
<unit_system data="US"/>
</forecast_information>
<current_conditions>
<condition data="Cloudy"/>
<temp_f data="72"/>
<temp_c data="22"/>
<humidity data="Humidity: 73%"/>
<icon data="/ig/images/weather/cloudy.gif"/>
</current_conditions>
</weather>
</xml_api_reply>
"""
tree = XML(data)
conditions = tree.findall("weather/current_conditions")
results = []
for c in conditions:
curr_results = {}
for child in c.getchildren():
curr_results[child.tag] = child.get('data')
results.append(curr_results)
print results
<?xml version="1.0"?><xml_api_reply version="1"><weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" ><forecast_information><city data="Baton Rouge, LA"/><postal_code data="baton rouge,la"/><latitude_e6 data=""/><longitude_e6 data=""/><forecast_date data="2011-02-22"/><current_date_time data="2011-02-22 20:06:59 +0000"/><unit_system data="US"/></forecast_information><current_conditions><condition data="Cloudy"/><temp_f data="72"/><temp_c data="22"/><humidity data="Humidity: 73%"/><icon data="/ig/images/weather/cloudy.gif"/><wind_condition data="Wind: N at 5 mph"/>
import re
with open('joeljames.txt','rb') as f:
RE = ('humidity data="([^"]*)"/>'
'<icon data="([^"]*)"/>'
'<wind_condition data="([^"]*)"/>')
print re.search(RE,f.read()).groups()
import re
print re.search(('humidity data="([^"]*)"/>'
'<icon data="([^"]*)"/>'
'<wind_condition data="([^"]*)"/>'),
open('joeljames.txt','rb').read()).groups()
('Humidity: 73%', '/ig/images/weather/cloudy.gif', 'Wind: N at 5 mph')
import re
print dict(re.findall('(humidity data|icon data|wind_condition data)'
'="([^"]*)"/>',open('joeljames.txt','rb').read()))
{'humidity data': 'Humidity: 73%', 'icon data': '/ig/images/weather/cloudy.gif', 'wind_condition data': 'Wind: N at 5 mph'}
>>> from lxml import etree
>>> filePath = 'c:/test.xml'
>>> root = etree.parse(filePath)
>>> keypairs = dict((r.tag, r.get('data')) for r in root.xpath('//*[@data]'))
>>> print keypairs
{'city': 'Baton Rouge, LA', 'forecast_date': '2011-02-22', 'latitude_e6': '', 'l
ongitude_e6': '', 'temp_c': '22', 'humidity': 'Humidity: 73%', 'postal_code': 'b
aton rouge,la', 'unit_system': 'US', 'temp_f': '72', 'current_date_time': '2011-
02-22 20:06:59 +0000', 'condition': 'Cloudy', 'icon': '/ig/images/weather/cloudy
.gif'}
>>> print keypairs['humidity']
Humidity: 73%
If the answers is incorrect or not given, you can answer the above question in the comment box. If the answers is incorrect or not given, you can answer the above question in the comment box.