she*_*sky 2 python string ascii python-2.7
我正在使用 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']
Run Code Online (Sandbox Code Playgroud)
所以我需要类似的东西
for e in elements:
if "–" in e:
# do something about it
Run Code Online (Sandbox Code Playgroud)
如果在这个 if 表达式中使用那个非 ASCII 字符,那么我会得到一个错误:"SyntaxError: Non-ASCII character '\xe2' in file...".
我试图if用这个 re 方法替换表达式:
re.search('\xe2', e)
Run Code Online (Sandbox Code Playgroud)
但现在不是这样了。所以我正在寻找一种方法来将非 ASCII 字符转换为常规 ASCII“-”或直接在搜索表达式中使用 ASCII 数字。
您可以检查字符值是否在 0 - 127 之间。
for c in someString:
if 0 <= ord(c) <= 127:
# this is a ascii character.
else:
# this is a non-ascii character. Do something.
Run Code Online (Sandbox Code Playgroud)
# -*- coding: utf-8 -*-
import re
elements = [u'2', u'3', u'13', u'37\u201341', u'43', u'44', u'46']
for e in elements:
if (re.sub('[ -~]', '', e)) != "":
#do something here
print "-"
Run Code Online (Sandbox Code Playgroud)
re.sub('[ -~]', '', e)将删除中的所有有效 ASCII 字符e(具体来说,将所有有效 ASCII 字符替换为“”),仅保留 e 的非 ASCII 字符。
希望这有帮助