Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python isalpha()和scandics_Python_String_Character Encoding - Fatal编程技术网

Python isalpha()和scandics

Python isalpha()和scandics,python,string,character-encoding,Python,String,Character Encoding,有没有办法让python isalpha方法理解scandics?我尝试了以下方法: >>> import locale >>> locale.getlocale() (None, None) >>> 'thisistext'.isalpha() True >>> 'äöå'.isalpha() False >>> locale.setlocale(locale.LC_ALL,"") 'Finnish_Fi

有没有办法让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=“带重音字母的字符串常量”
。还要说明您使用的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
导入区域设置 >>>setlocale(locale.LC_ALL,“Finnish”) “芬兰•芬兰1252” >>>s='\xe4\xf6\xe5' >>>导入Unicode数据 >>>对于s中的c: ... u=c.解码('1252') ... 打印repr(c)、repr(u)、Unicode数据。名称(u“”) ... '\xe4'u'\xe4'带分音符的拉丁文小写字母A '\xf6'u'\xf6'带分音符的拉丁文小写字母O '\xe5'u'\xe5'拉丁文小写字母A,上面带环 >>>s.isalpha() 真的
您可以将上述结果与进行比较。

您也可以尝试以下方法:

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

对于那些错过它的人,请注意声明unicode字符串的“u”。