我有一些麻烦要将字符串中的XML直接解析为Element。 我有一个xml文件,我已将其转换为字符串:
resp = requests.post(request_url, request_string, proxies=urllib.getproxies(), stream=True)
按照此处的建议:https://stackoverflow.com/a/25023776/1551810,我使用了contenet而不是文本:
response_tree = ET.fromstring(resp.content)
我显然在XML文件中有一个语法错误:
XMLSyntaxError: Input is not proper UTF-8, indicate encoding !
Bytes: 0xB0 0x20 0x4E 0x6F, line 12, column 35
我试过这个来编码内容,但无济于事:
ET.fromstring(resp.content.encode('utf8'))
我有比以前更多的XMLSYntaxError。 谁能帮我? 我已经花了两个小时这个。
答案 0 :(得分:1)
我终于找到了一个帮助我解决问题的好库:cchardet(https://pypi.python.org/pypi/cchardet/0.3.5) 我跟着@deets的建议。
import cchardet
charac_coding_desired = 'UTF-8'
encoding = cchardet.detect(resp.content)['encoding']
if charac_coding_desired != encoding:
strg= resp.content.decode(encoding, resp.content).encode(charac_coding_desired)
现在我可以粗暴地解析字符串:
ET.fromstring(strg)
非常感谢!!!