2012-02-12 78 views
1

我有一個單詞的字典列表,一些包含像這樣的序列的單詞:如何檢查字符串中的unicode或轉義序列?

K\xc3\xb6LNKöLN當正確顯示時。

我想清除這些單詞的列表,使它們只包含純ASCII字符。我怎樣才能做一個簡單的真/假檢查,看看一個字符串是否包含這樣的序列?

+1

哪個ASCII字符是純?使用Unicode有什麼可怕的地方?你願意將它改爲「KoLN」並保留它嗎? – 2012-02-12 02:08:30

+0

@JohnMachin這是一個字典攻擊實驗。文字取自/ usr/share/dict – Jon 2012-02-12 02:24:34

回答

5

str.isalpha()可能有助於在這裏:​​

>>> 'KöLN'.isalpha() 
False 
>>> 'K\xc3\xb6LN'.isalpha() 
False 
>>> 'Cologne'.isalpha() 
True 

過濾:

>>> [word for word in ('KöLN', 'K\xc3\xb6LN', 'Cologne') if word.isalpha()] 
['Cologne'] 
+1

太棒了,謝謝! – Jon 2012-02-12 01:27:32

+2

雖然:u'KöLN'.isalpha()賦予True,'KöLN'.isalpha()賦予False [只是在2.7中以UTF-8編碼的文件嘗試過],這一點很重要。]我想我會只需嘗試將字符串轉換爲ascii,然後根據是否引發異常來決定。 – DSM 2012-02-12 01:32:04

+0

@DSM:這是一個很好的選擇。 – Johnsyweb 2012-02-12 01:43:08

相關問題