首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python: os.path.exists() unicode异常

python: os.path.exists() unicode异常
EN

Stack Overflow用户
提问于 2015-09-08 20:32:37
回答 2查看 807关注 0票数 1

在我的python程序中,我使用untangle来解析XML文件:

代码语言:javascript
复制
from untangle import parse

parse(xml)

XML以utf-8编码,并包含非ASCII字符。在我的程序中,这是在制造麻烦。当xml字符串被传递给untangle时,它会尽量巧妙地首先自动检查它是否是一个文件名。所以它调用

代码语言:javascript
复制
os.path.exists(xml)

看起来os模块试图将其转换回ascii,并导致以下异常:

代码语言:javascript
复制
UnicodeEncodeError: 'ascii' codec can't encode characters in position 169-172: ordinal not in range(128)

在这个文件的顶部,我这样做是作为一个技巧,应该可以解决这个问题:

代码语言:javascript
复制
import sys
reload(sys)
sys.setdefaultencoding('UTF8')

不幸的是,它没有起作用。

我不知道还会出什么问题。请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2015-09-08 20:37:48

untangle没有提供直接的函数,这有点奇怪。

最简单的解决方案是复制untangle.parse的相关实现来解析文件:

代码语言:javascript
复制
def parse_text (text):
    parser = untangle.make_parser()
    sax_handler = untangle.Handler()
    parser.setContentHandler(sax_handler)
    parser.parse(StringIO(content))
    return sax_handler.root
票数 0
EN

Stack Overflow用户

发布于 2015-09-08 20:51:24

如下所示,解码对你的情况有帮助吗?

代码语言:javascript
复制
from untangle import parse
xml=isinstance(xml, str) and xml.decode("utf-8") or xml
parse(xml)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32457971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档