python - 字符串是否有英文字符——一段Python代码

标签 python string

请查看为什么这两段代码会产生不同的结果。目标是如果输入字符串包含任何非英语字符,则返回 True 或 False。

代码 1:

def char_find(string):
    for char in string:
        if (ord(char) >= 0) and ord(char) <= 127:
            return True
        else:
            return False

result1 = char_find('爱奇艺PPS -《欢乐颂2》电视剧热播')
result2 = char_find('Docs To Go™ Free Office Suite')
result3 = char_find('Instachat 😜')
print(result1, result2, result3)

这会产生结果 False, True, True

代码 2:

def is_english(string):
    for char in string:
        if ord(char) > 127:
            return False
    return True

resultX = is_english('爱奇艺PPS -《欢乐颂2》电视剧热播')
resultY = is_english('Docs To Go™ Free Office Suite')
resultZ = is_english('Instachat 😜')
print(resultX, resultY, resultZ)

这会产生结果 False, False, False

我不明白为什么第一段代码会产生不正确的结果。

最佳答案

在代码 1 中,如果找到英文字符,则返回 True,否则返回 False,但在代码 2 中,如果找到英文字符,则返回 False你发现一个非英文字符。只有当所有字符都是英文时,这才会返回 True

要注意的关键点是,一旦遇到 return,您就会退出函数,并使用与 return 一起传递的值。

您可以使用 string 模块和生成器上的 all 以更 python 的方式执行此操作:

def is_english(s):
    return all(char.lower() in string.ascii_lowercase for char in s)

如果所有字符都是英文字符,则返回 True,否则返回 False

关于python - 字符串是否有英文字符——一段Python代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57238049/

相关文章:

python - 在 pyspark -pandas_udf 中按组应用函数(没有名为 pyarrow 的模块)

python - pyspark Pandas udf 运行时错误 : Number of columns of the returned doesn't match specified schema

java - 了解运算符优先级

python - 循环匹配列表的各个部分

python - 从python中的类调用函数

javascript - 使用 Python 抓取 Meteor

c# - 如何拆分字符串然后重新加入它?

vb.net - 如何在字符串的两个相同字符之间获取字符串 - 在 vb.net 中

c - 如何使用 : "\\" or "\"? 分割字符串

algorithm - 查找字符串的最长边界