检查字符串中的任何字符是不是不在另一个字符串中[重复]

Posted

技术标签:

【中文标题】检查字符串中的任何字符是不是不在另一个字符串中[重复]【英文标题】:Check if any character in a string is not in another string [duplicate]检查字符串中的任何字符是否不在另一个字符串中[重复] 【发布时间】:2019-11-11 03:29:56 【问题描述】:

我有一个函数,用户输入字符串s。 如果s 中的任何字符不在"0123456789e+-. " 中,则该函数应返回False

我试过了:

if any(s) not in "0123456789e+-. ":
    return False

这个:

if any(s not in "0123456789e+-. "):
    return False

还有这个:

if any(character for character in s not in "0123456789e+-. "):
    return False

在这种情况下我应该如何使用any()函数?

【问题讨论】:

if any(character not in "0123456789e+-. " for character in s ): 【参考方案1】:

您想遍历s 中的每个字符并检查它是否不在集合"0123456789e+-. "

chars = set("0123456789e+-. ")
if any(c not in chars for c in s):
    return False

在这种情况下,您也可以使用all 来检查相同的情况

chars = set("0123456789e+-. ")
if not all(c in chars for c in s):
    return False

【讨论】:

怎么样:return all(c in set("0123456789e+-. ") for c in s) 这是一个很好的观点@Austin,但我不知道 OP 是否想在另一种情况下返回 True,因此我没有添加它 这将在每次迭代时创建一个新集合,不是吗?没什么大不了的,但只是其中之一。 公平点@MadPhysicist 相应更新!【参考方案2】:

只是与sets 不同:

pattern = "0123456789e+-. "
user_input = '=-a'

if set(user_input) - set(pattern):
    return False

或者只测试负子集:

if not set(user_input) < set(pattern):
    return False

https://docs.python.org/3.7/library/stdtypes.html#set-types-set-frozenset

【讨论】:

以上是关于检查字符串中的任何字符是不是不在另一个字符串中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

puppet 中用于检查字符串是不是包含另一个字符串的函数

如何检查字符串是不是包含列表的任何元素并获取元素的值?

pandas loc 检查值是不是包含多个单词或字符串中的任何一个

如何检查字符串是不是包含数组中的任何元素[关闭]

检查一个字符串的字母在另一个字符串中是不是按顺序排列

C# 检查字符串是不是包含字符串数组中的任何匹配项