检查字符串是否仅包含 ASCII 字符? [英] Check that a string contains only ASCII characters?
本文介绍了检查字符串是否仅包含 ASCII 字符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在 Python 中检查字符串是否仅包含 ASCII 字符?类似于 Ruby 的 ascii_only?
我希望能够判断从文件中读取的字符串特定数据是否为 ascii
解决方案
在 Python 3.7 中添加了可以执行您想要的操作的方法:
<块引用>str
、bytes
和 bytearray
获得了对新 isascii()
方法,可用于测试字符串或字节是否仅包含 ASCII 字符.
<小时>
否则:
<预><代码>>>>all(ord(char) <128 for char in 'string')>>>真的>>>all(ord(char) <128 for char in 'строка')>>>错误的另一个版本:
<预><代码>>>>def is_ascii(文本):如果是实例(文本,Unicode):尝试:text.encode('ascii')除了 UnicodeEncodeError:返回错误别的:尝试:text.decode('ascii')除了 UnicodeDecodeError:返回错误返回真...>>>is_ascii('文本')>>>真的>>>is_ascii(u'text')>>>真的>>>is_ascii(u'text-строка')>>>错误的>>>is_ascii('text-строка')>>>错误的>>>is_ascii(u'text-строка'.encode('utf-8'))>>>错误的How do I check that a string only contains ASCII characters in Python? Something like Ruby's ascii_only?
I want to be able to tell whether string specific data read from file is in ascii
解决方案
In Python 3.7 were added methods which do what you want:
str
,bytes
, andbytearray
gained support for the newisascii()
method, which can be used to test if a string or bytes contain only the ASCII characters.
Otherwise:
>>> all(ord(char) < 128 for char in 'string')
>>> True
>>> all(ord(char) < 128 for char in 'строка')
>>> False
Another version:
>>> def is_ascii(text):
if isinstance(text, unicode):
try:
text.encode('ascii')
except UnicodeEncodeError:
return False
else:
try:
text.decode('ascii')
except UnicodeDecodeError:
return False
return True
...
>>> is_ascii('text')
>>> True
>>> is_ascii(u'text')
>>> True
>>> is_ascii(u'text-строка')
>>> False
>>> is_ascii('text-строка')
>>> False
>>> is_ascii(u'text-строка'.encode('utf-8'))
>>> False
这篇关于检查字符串是否仅包含 ASCII 字符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文