Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python web响应的Xml解析_Python_Xml_Web Services_Nominatim - Fatal编程技术网

Python web响应的Xml解析

Python web响应的Xml解析,python,xml,web-services,nominatim,Python,Xml,Web Services,Nominatim,我正试图得到提名人对几千个城市地理编码的回应 import os import requests import xml.etree.ElementTree as ET txt = open('input.txt', 'r').readlines() for line in txt: lp, region, district, municipality, city = line.split('\t') baseUrl = 'http://nominatim.openstreetmap.org

我正试图得到提名人对几千个城市地理编码的回应

import os
import requests
import xml.etree.ElementTree as ET

txt = open('input.txt', 'r').readlines()
for line in txt:
 lp, region, district, municipality, city = line.split('\t')
 baseUrl = 'http://nominatim.openstreetmap.org/search/gb/'+region+'/'+district+'/'+municipality+'/'+city+'/?format=xml' 
 # eg. http://nominatim.openstreetmap.org/search/pl/podkarpackie/stalowowolski/Bojan%C3%B3w/Zapu%C5%9Bcie/?format=xml
 resp = requests.get(baseUrl)
 resp.encoding = 'UTF-8' # special diacritics
 msg = resp.text
 # parse response to get lat & long
 tree = ET.parse(msg)
 root = tree.getroot()
 print tree
但结果是:

Traceback (most recent call last):
File "geo_miasta.py", line 17, in <module>
    tree = ET.parse(msg)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1182, in parse
    tree.parse(source, parser)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 647, in parse
    source = open(source, "rb")    
IOError: [Errno 2] No such file or directory: u'<?xml version="1.0" encoding="UTF-8" ?>\n<searchresults timestamp=\'Tue, 11 Feb 14 21:13:50 +0000\' attribution=\'Data \xa9 OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright\' querystring=\'\u015awierczyna, Drzewica, opoczy\u0144ski, \u0142\xf3dzkie, gb\' polygon=\'false\' more_url=\'http://nominatim.openstreetmap.org/search?format=xml&amp;exclude_place_ids=&amp;q=%C5%9Awierczyna%2C+Drzewica%2C+opoczy%C5%84ski%2C+%C5%82%C3%B3dzkie%2C+gb\'>\n</searchresults>'
您正在使用,它将文件名或文件对象作为参数。但是,您传递的不是文件或文件对象,而是unicode字符串

试试看

像这样:

 tree = ET.fromstring(msg)
以下是一个完整的示例程序:

import os
import requests
import xml.etree.ElementTree as ET

baseUrl = 'http://nominatim.openstreetmap.org/search/pl/podkarpackie/stalowowolski/Bojan%C3%B3w/Zapu%C5%9Bcie\n/?format=xml'
resp = requests.get(baseUrl)
msg = resp.content
tree = ET.fromstring(msg)
for place in tree.findall('place'):
  print u'{:s}: {:+.2f}, {:+.2f}'.format(
    place.get('display_name'),
    float(place.get('lon')),
    float(place.get('lat'))).encode('utf-8')

谢谢,这会将错误边界移动到编码空间:`UnicodeEncodeError:'ascii'编解码器无法对115:ordinal中的字符u'\xa9'进行编码,不在范围(128)`@m93内-这是因为您使用的是
响应文本
而不是
响应内容
。请参阅我的编辑,以了解应该开始的完整程序。回溯(最后一次调用):文件“D:\Reddy\Python\new.py”,第4行,在tree=ET.parse('D:\Reddy\bankloanactservice\u transactionq.xml')文件“C:\Python33\lib\xml\etree\ElementTree.py”,第1242行,在parse tree.parse(源,解析器)文件中“C:\Python33\lib\xml\etree\ElementTree.py”,第1730行,在parse self.\u root=parser.\u parse(源)文件“”中,第None行,xml.etree.ElementTree.ParseError:语法错误:第1行,第0列这是我收到的错误消息。请帮助我您可能应该问自己的问题,而不是使用关于这个主题的答案(为了避免混淆,并确保为您的具体问题找到解决方案),并且,如果您认为问题与此相关,您应该建立一个链接,以帮助回答者。
import os
import requests
import xml.etree.ElementTree as ET

baseUrl = 'http://nominatim.openstreetmap.org/search/pl/podkarpackie/stalowowolski/Bojan%C3%B3w/Zapu%C5%9Bcie\n/?format=xml'
resp = requests.get(baseUrl)
msg = resp.content
tree = ET.fromstring(msg)
for place in tree.findall('place'):
  print u'{:s}: {:+.2f}, {:+.2f}'.format(
    place.get('display_name'),
    float(place.get('lon')),
    float(place.get('lat'))).encode('utf-8')
import os,sys,time
import xml.etree.ElementTree as ET
from xml.etree.ElementTree import parse
tree = ET.parse('D:\Reddy\BankLoanAcctService_transactionInq.xml')
root=tree.getroot()

for TrxnEffDt in root.iter('TrxnEffDt'):
 new_TrxnEffDt= str(time.strftime("%y-%m-%d"))
 TrxnEffDt=str(new_TrxnEffDt)

filename2 ="D:\Reddy\BankLoanAcctService_transactionInq2.txt"
r=open(filename2,'w')
sys.stdout =r