检查字符串是否仅包含 ASCII 字符? [英] Check that a string contains only ASCII characters?

查看:68
本文介绍了检查字符串是否仅包含 ASCII 字符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 Python 中检查字符串是否仅包含 ASCII 字符?类似于 Ruby 的 ascii_only?

我希望能够判断从文件中读取的字符串特定数据是否为 ​​ascii

解决方案

在 Python 3.7 中添加了可以执行您想要的操作的方法:

<块引用>

strbytesbytearray 获得了对新 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, and bytearray gained support for the new isascii() 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆