Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何确定字符串是否包含除其他列表中的字符以外的任何字符_Python_Regex_Pandas_Contains - Fatal编程技术网

在python中,如何确定字符串是否包含除其他列表中的字符以外的任何字符

在python中,如何确定字符串是否包含除其他列表中的字符以外的任何字符,python,regex,pandas,contains,Python,Regex,Pandas,Contains,我有一个字符列表: example_list = ['a','b','c','1','2','3'] 我迭代地运行pandas数据框中的一列,并评估是否有“关闭”的内容。让我们调用我正在运行的列/列表值。我正在查看的一个值示例: value1 = ['a12'] value2 = ['d88'] value3 = ['b33'] 值1和3是正确的,因为它们仅由示例_列表中的元素组成。我希望将value2标记为False,将像1和3这样的值标记为True 我所尝试的: not any(x in

我有一个字符列表:

example_list = ['a','b','c','1','2','3']
我迭代地运行pandas数据框中的一列,并评估是否有“关闭”的内容。让我们调用我正在运行的列/列表值。我正在查看的一个值示例:

value1 = ['a12']
value2 = ['d88']
value3 = ['b33']
值1和3是正确的,因为它们仅由示例_列表中的元素组成。我希望将value2标记为False,将像1和3这样的值标记为True

我所尝试的:

not any(x in example_list for x in value)

这似乎总是回到了现实。使用all()方法将查看是否所有内容都在其中,any()将查找其中是否有任何内容,是吗?我正在寻找一种“x以外的任何东西”的方法。我是python新手,所以我想这是一个“我不知道,我不知道什么”的例子,有人有什么建议吗?谢谢

如果我理解正确,每一行都包含一个包含单个元素的列表:

df = pd.DataFrame({'value': [['a12'], ['d88'], ['b33']]})
example_list = ['a','b','c','1','2','3']

print(df)

    value
0   [a12]
1   [d88]
2   [b33]
然后您可以使用列表:

df['check'] = [True if set(x[0]).issubset(set(example_list)) else False for x in df['value']]
我们正在检查第一个元素的集合(在您的例子中是单个值)是否是示例列表集合的子集,并返回True。当条件不满足时,返回False

输出:

    value   check
0   [a12]    True
1   [d88]   False
2   [b33]    True

如果不是您的意思,请告诉我,或者提供一些简单的输入作为数据帧。

您的
值是字符串列表。这意味着,在每种情况下,您都要检查完整字符串(如“a12”)是否包含在单个字符列表中,这永远不会是真的

s = pd.Series(["a12", "d88", "b33"])
l = "".join(example_list)

>>> s
0    a12
1    d88
2    b33
dtype: object

>>> l
'abc123'

>>> s.apply(set(l).issuperset)
0     True
1    False
2     True
dtype: bool
如果不想更改
,可以为第一个字符串编制索引,然后迭代该字符串的字母:

all(x in example_list for x in value1[0])  # => True
all(x in example_list for x in value2[0])  # => False
all(x in example_list for x in value3[0])  # => True

以下是一个有效的解决方案,包括您开始的内容:

example_list = ['a', 'b', 'c', '1', '2', '3']

value1 = ['a12']
value2 = ['d87']
value3 = ['b33']

result=all(list(map(lambda x : True if x in example_list else False, *value2)))
print(result)
*value2与列表内容一起使用,因此它是一个字符串
*all用于测试每个字符是否属于示例列表

我认为您需要
all
而不是
any
问题在于您创建了列表(用于值),因此您可以检查给定字符串“a12”是否在示例列表中,并且每次都失败。所以否定的any将返回true。我想你想把列表改成字符串(去掉括号)你想的全是错的。用文字思考:对于目标字符串中的所有字符,字符是否在列表中<代码>确定=全部(示例中的c为值1中的c的列表)