Python isalpha()和scandics

2024-09-27 00:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法让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

Tags: 方法importnonefalsetruealllocalelc
3条回答

你也可以试试这个:

>>> 'äöå'.decode('utf-8').isalpha()
True

最简单的方法是使用unicode字符串,如果您的情况允许的话。在字符串前加上“u”符号:

>>> u'привіт'.isalpha()
True

或者这一行作为文件的第一行:

# -*- coding: utf-8 -*-

看起来字符串常量中的内容不是用cp1252编码的字节字符串,这是使str.isalpha在您的语言环境中正常工作所必需的。你不会说是在什么环境下打的。我可以从locale响应的方式看出您在Windows上;也许您是从某个IDE获得UTF-8,或者从命令提示符窗口获得cp850

你在屏幕上看到的通常对调试没有什么帮助。你所看到的不是你所拥有的。内置函数是(或希望是)您的朋友。它将用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进行比较。

相关问题 更多 >

    热门问题