我正在使用Python 2.7解析多个XML文件,有一些字符串,如: string ="[2,3,13,37–41,43,44,46]"
. 我拆分它们以获得所有元素的列表,然后我必须使用"–"检测元素,如"37–41",但事实证明这不是常规破折号,它是非ASCII字符:
elements = [u'2', u'3', u'13', u'37\u201341', u'43', u'44', u'46']
所以我需要类似的东西
for e in elements:
if "–" in e:
# do something about it
如果在此if表达式中使用非ASCII字符,则会出现错误: "SyntaxError: Non-ASCII character '\xe2' in file..."
.
我试图用这个re方法替换 if
表达式:
re.search('\xe2', e)
但事实并非如此 . 所以我正在寻找一种方法来将非ASCII字符转换为常规ASCII“ - ”或直接在搜索表达式中使用ASCII数字 .
5 回答
re.sub('[ -~]', '', e)
将删除e
中的任何有效ASCII字符(具体来说,用“”替换任何有效的ASCII字符),只保留e的非ASCII字符 .希望这有帮助
您可以检查字符值是否介于0 - 127之间 .
尝试一下:
您必须在Python程序中声明您的编码,例如:
通常Python告诉你这个问题:
添加encoying后,您的代码应该可以正常工作 .
这可能无法解答您的整个问题 . 方式太简单而且不灵活 . 每当我遇到这个错误时,我就会这样做 .
我经常打开一个 interactive python shell 并输入:
print [ln for ln in open("filename.py", "rb").readlines() if "\xe2" in ln]
这为你提供了\ ex2的行 . 然后尝试在编辑器中找到它 . 并尝试删除该字符 .