非ASCII范围

时间:2017-09-26 07:16:58

标签: python python-2.7 utf-8

请给我一系列的utf-8 例如:

>>> s
'\xe9\x98\xbf\xe5\xaf\x8c\xe6\xb1\x97Afghanistan'
>>>re.findall('[\x00-\xff]+',s)
['\xe9\x98\xbf\xe5\xaf\x8c\xe6\xb1\x97Afghanistan']

我需要出局:

'\xe9\x98\xbf\xe5\xaf\x8c\xe6\xb1\x97'

2 个答案:

答案 0 :(得分:0)

尝试使用此正则表达式模式仅查找非ascii。

re.findall(r'[^\x00-\x7f]',s)

答案 1 :(得分:0)

使用'[\x00-\xff]',您正在选择所有可能的字符。

在您的情况下,您需要的是更小的范围。对于非ASCII,请尝试:

输入:

re.findall('[^\x00-\x7f]', s)

<强>输出:

['\xe9', '\x98', '\xbf', '\xe5', '\xaf', '\x8c', '\xe6', '\xb1', '\x97']

如果您需要输出不是列表,而是单个字符串(正如您在问题的最后一行中指定的那样,只需这样做

输入:

re.findall('[^\x00-\x7f]+', s)[0]

输出

'\xe9\x98\xbf\xe5\xaf\x8c\xe6\xb1\x97'