首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python isalpha()和丑闻

Python isalpha()和丑闻
EN

Stack Overflow用户
提问于 2010-11-26 23:44:07
回答 3查看 9.9K关注 0票数 4

有没有办法让python isalpha方法理解丑闻?我尝试过以下几种方法:

代码语言:javascript
复制
>>> 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
EN

回答 3

Stack Overflow用户

发布于 2010-11-26 23:47:12

最简单的方法是使用unicode字符串,如果在您的情况下这是可以的。只需将'u‘符号放在字符串之前:

代码语言:javascript
复制
>>> u'привіт'.isalpha()
True

或文件中的第一行:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
票数 10
EN

Stack Overflow用户

发布于 2010-11-27 04:01:29

看起来字符串常量中包含的内容并不是以cp1252编码的字节字符串,而这正是让str.isalpha在您的语言环境中正常工作所必需的。你没有说你是在什么环境下输入的。我可以从locale响应的方式看出您是在Windows上;也许您是从某个集成开发环境获取UTF-8,或者从命令提示符窗口获取cp850

您在屏幕上看到的内容通常对调试帮助很小。你所看到的并不是你所拥有的。repr内置函数是(或想要成为)您的朋友。它将以ASCII明确地显示您实际拥有的内容。Python3:repr被重命名为ascii,并且有一个新的repr,这不是您想要的

尝试输入s = "your string constant with 'accented' letters",然后输入print repr(s),然后编辑您的问题以显示结果(复制/粘贴,不要重新键入)。还要说明您使用的是哪个Python版本。

另一个潜在的朋友是`unicodedata.name的..。见下文。

代码语言:javascript
复制
>>> 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进行比较。

票数 3
EN

Stack Overflow用户

发布于 2013-01-29 04:43:08

你也可以尝试这样做:

代码语言:javascript
复制
>>> 'äöå'.decode('utf-8').isalpha()
True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4286637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档