检查一个字符串中的任何字符是否不在另一个字符串中

时间:2019-06-29 17:02:58

标签: python python-3.x string iterator any

我有一个函数,用户可以输入字符串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()函数?

2 个答案:

答案 0 :(得分:3)

您要遍历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

答案 1 :(得分:3)

只是相差set

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