2017-09-26 59 views
-2

,請給我一個範圍UTF-8 例子:範圍內的非ASCII的

>>> 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' 
+0

' '[\ x00- \ XFF]''*一致的字節串的所有字節*。你的意思是你想要**非ASCII字節**嗎? –

+0

聽起來好像你想要[用一個空格替換非ASCII字符](// stackoverflow.com/q/20078816) –

+0

的反過來要清楚:ASCII是UTF-8的一個子集。任何有效的ASCII數據也是有效的UTF-8。 –

回答

0

With '[\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' 
0

試試這個正則表達式來找出唯一的非ASCII。

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