如何在python3中检查字符串是否为100%ascii

2024-04-29 11:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两根绳子

eng = "Clash of Clans – Android Apps on Google Play"
rus = "Castle Clash: Новая Эра - Android Apps on Google Play"

现在我想通过使用Python 3来检查字符串是否为英语。在

我读过这个Stackoverflow的答案here,它对我没有帮助,因为它的解决方案是Python 2.x,但在评论中有人提到使用

^{pr2}$

为了使它在Python 3.x中工作,但我的问题是,在这两种情况下,它都会引发相同的UnicodeEncodeError异常!在

截图: enter image description here

所以现在我被困在这里,不知道该怎么做! 请指导我,否则我必须用另一种方法来确定String是否在English中! 谢谢


Tags: appsof字符串答案playongooglestackoverflow
3条回答

可以使用isascii()方法:

>>> rus.isascii()
False

与您链接到的SalvadorDali的answer一样,您必须使用try-catch块来检查编码中的错误。在

# -*- coding: utf-8 -*-
def isEnglish(s):
    try:
        s.encode('ascii')
    except UnicodeEncodeError:
        return False
    else:
        return True

不过要注意的是,当我复制并粘贴您的engrus字符串来尝试它们时,它们都是False。重新输入英文版返回True,所以我不确定这是怎么回事。在

你的英文字符串不是真正的ASCII,它包含字符^{} - EN DASH。这看起来与ASCII短划线U+002d非常相似,但不同。在

如果这是您需要担心的唯一角色,您可以进行简单的替换以使其正常工作:

>>> eng.replace('\u2013', '-').encode('ascii')
b'Clash of Clans - Android Apps on Google Play'

相关问题 更多 >