ET.fromstring 传进去 unicode 字符串提示 UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 76-99: ordinal not in range(128)。
encode(‘utf-8′) 后传进去提示 ValueError: multi-byte encodings are not supported,不支持多字节编码。
python 的中文支持真是头痛,这个如果用 sys.setdefaultencoding=’utf-8’ 可以解决,但是觉得直接为了这个直接修改了全局编码不太好,最后发现可以用如下代码解决:
1 2 3 4 5 6 7 8 9 | try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET utf8_parser = ET.XMLParser(encoding='utf-8') tree = ET.parse(StringIO(r.text.encode('utf-8')), parser=utf8_parser) root=tree.getroot() |
https://gist.github.com/GameXG/89b92a9a94456ff2da85