有没有办法让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
答案 0 :(得分:6)
最简单的方法是在你的情况下使用unicode字符串。只需在字符串前加上'u'符号:
>>> u'привіт'.isalpha()
True
或者这行作为文件中的第一行:
# -*- coding: utf-8 -*-
答案 1 :(得分:3)
您的字符串常量中的内容看起来不是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
您可以将上述结果与this chart进行比较。
答案 2 :(得分:1)
你也可以试试这个:
>>> 'äöå'.decode('utf-8').isalpha()
True