首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查Python中的字符串是否为ASCII?

如何检查Python中的字符串是否为ASCII?
EN

Stack Overflow用户
提问于 2008-10-13 00:13:40
回答 14查看 252.6K关注 0票数 240

我想检查一个字符串是否为ASCII格式。

我知道ord(),但是当我尝试ord('é')时,我使用的是TypeError: ord() expected a character, but string of length 2 found。我知道这是由我构建Python的方式引起的(正如ord()'s documentation中解释的那样)。

有没有其他检查的方法?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2008-10-13 00:30:43

代码语言:javascript
复制
def is_ascii(s):
    return all(ord(c) < 128 for c in s)
票数 220
EN

Stack Overflow用户

发布于 2008-10-13 00:30:32

我觉得你问的问题不对--

python中的字符串没有对应于'ascii‘、utf-8或任何其他编码的属性。字符串的来源(无论是从文件中读取,还是从键盘输入,等等)可能已经在ascii中编码了unicode字符串以生成您的字符串,但这是您需要找到答案的地方。

也许你可以问的问题是:“这个字符串是用ascii编码unicode字符串的结果吗?”--你可以通过尝试回答这个问题:

代码语言:javascript
复制
try:
    mystring.decode('ascii')
except UnicodeDecodeError:
    print "it was not a ascii-encoded unicode string"
else:
    print "It may have been an ascii-encoded unicode string"
票数 276
EN

Stack Overflow用户

发布于 2013-08-23 21:14:49

在Python 3中,我们可以将字符串编码为UTF-8,然后检查长度是否保持不变。如果是,则原始字符串为ASCII。

代码语言:javascript
复制
def isascii(s):
    """Check if the characters in string s are in ASCII, U+0-U+7F."""
    return len(s) == len(s.encode())

要进行检查,请传递测试字符串:

代码语言:javascript
复制
>>> isascii("♥O◘♦♥O◘♦")
False
>>> isascii("Python")
True
票数 172
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/196345

复制
相关文章

相似问题

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