[英]Python isalpha() and scandics
有沒有辦法讓python isalpha方法理解scandics? 我嘗試過以下方法:
>>> import locale
>>> locale.getlocale()
(None, None)
>>> 'thisistext'.isalpha()
True
>>> 'äöå'.isalpha()
False
>>> locale.setlocale(locale.LC_ALL,"")
'Finnish_Finland.1252'
>>> locale.getlocale()
('Finnish_Finland', '1252')
>>> 'äöå'.isalpha()
False
最簡單的方法是在你的情況下使用unicode字符串。 只需在字符串前加上'u'符號:
>>> u'привіт'.isalpha()
True
或者這行作為文件的第一行:
# -*- coding: utf-8 -*-
看起來你的字符串常量中的字符串不是用cp1252
編碼的字節字符串,這是使str.isalpha
在你的語言環境中正常工作所需的。 你沒有說你輸入的環境。 我可以通過locale
響應您在Windows上的方式來判斷; 也許你從某個IDE獲得UTF-8
或從命令提示符窗口獲得cp850
。
您在屏幕上看到的內容通常對調試沒什么幫助。 你所看到的不是你所擁有的。 repr
內置函數是(或想成為)你的朋友。 它將在ASCII中明確地顯示您實際擁有的內容。 [Python 3: repr
重命名為ascii
並且有一個新的repr
,這不是你想要的]
嘗試輸入s = "your string constant with 'accented' letters"
然后print repr(s)
並編輯你的問題以顯示結果(復制/粘貼,不要重新輸入)。 還要說明你正在使用的Python版本。
另一個可能的朋友是`unicodedata.name'......見下文。
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'Finnish')
'Finnish_Finland.1252'
>>> s = '\xe4\xf6\xe5'
>>> import unicodedata
>>> for c in s:
... u = c.decode('1252')
... print repr(c), repr(u), unicodedata.name(u, '<no name>')
...
'\xe4' u'\xe4' LATIN SMALL LETTER A WITH DIAERESIS
'\xf6' u'\xf6' LATIN SMALL LETTER O WITH DIAERESIS
'\xe5' u'\xe5' LATIN SMALL LETTER A WITH RING ABOVE
>>> s.isalpha()
True
您可以將上述結果與此圖表進行比較。
你也可以試試這個:
>>> 'äöå'.decode('utf-8').isalpha()
True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.