我想检查一个字符串是否为ASCII格式。
我知道ord()
,但是当我尝试ord('é')
时,我使用的是TypeError: ord() expected a character, but string of length 2 found
。我知道这是由我构建Python的方式引起的(正如ord()
's documentation中解释的那样)。
有没有其他检查的方法?
发布于 2008-10-12 16:30:43
def is_ascii(s):
return all(ord(c) < 128 for c in s)
发布于 2008-10-12 16:30:32
我觉得你问的问题不对--
python中的字符串没有对应于'ascii‘、utf-8或任何其他编码的属性。字符串的来源(无论是从文件中读取,还是从键盘输入,等等)可能已经在ascii中编码了unicode字符串以生成您的字符串,但这是您需要找到答案的地方。
也许你可以问的问题是:“这个字符串是用ascii编码unicode字符串的结果吗?”--你可以通过尝试回答这个问题:
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"
发布于 2013-08-23 13:14:49
在Python 3中,我们可以将字符串编码为UTF-8,然后检查长度是否保持不变。如果是,则原始字符串为ASCII。
def isascii(s):
"""Check if the characters in string s are in ASCII, U+0-U+7F."""
return len(s) == len(s.encode())
要进行检查,请传递测试字符串:
>>> isascii("♥O◘♦♥O◘♦")
False
>>> isascii("Python")
True
https://stackoverflow.com/questions/196345
复制相似问题