如何在python 3中检查字符串是否为100%ASCII

maq*_*maq 3 python string ascii encode python-3.x

我有两个弦

eng = "Clash of Clans – Android Apps on Google Play"
rus = "Castle Clash: ????? ??? - Android Apps on Google Play"
Run Code Online (Sandbox Code Playgroud)

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

我已经在这里阅读了Stackoverflow的答案,它对Python 2.x解决方案没有帮助,但是在评论中有人提到了使用

string.encode('ascii')
Run Code Online (Sandbox Code Playgroud)

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

屏幕截图: 在此处输入图片说明

所以现在我被困在这里,无法弄清楚如何使其工作!请指导我,否则我必须使用另一种方法来确定是否StringEnglish!谢谢

Hay*_*lou 5

与您链接到Salvador Dali的答案一样,您必须使用try-catch块来检查编码中的错误。

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

不过请注意,当我复制并粘贴您engrus字符串尝试使用它们时,它们都以形式出现False。重新输入英文的rety True,所以我不确定这是怎么回事。