Python:检查字符串中是否有任何列表项,如果是,则将找到的项分配给变量

时间:2017-07-08 18:15:56

标签: python string list-comprehension

我有以下列表:

my_list = ['a', 'b', 'c']

我有以下字符串列表:

my_strings = ['azz', 'bzz', 'czz']

我正在执行以下操作,以确定my_list中的项目中是否包含my_strings的任何项目:

for my_string in my_strings:
    if any(x in my_string for x in my_list):
        # Do Stuff

保留x my_list的最佳做法是什么,以便我可以执行以下操作:

#Do Stuff
new_var = my_string.split('x')[1]

通过确定我的列表中的zz位于new_var的{​​{1}}

,所需的结果可以将a分配给azz

4 个答案:

答案 0 :(得分:2)

确实很简单,您甚至可以使用list comprehension在漂亮的单行内容中执行此操作,如下所示:

new_var = [my_string.split(x)[1] for my_string in my_strings for x in my_list if x in my_string]

这将返回my_strings中所有字符串的所有分组中的第2个元素,其中存在来自my_list的元素

答案 1 :(得分:0)

你不应该使用any,因为你真的关心哪一个匹配:

for my_string in my_strings:
    for x in my_list:
        if x in my_string:
            #Do Stuff
            my_string.split('x')[0]
            break

答案 2 :(得分:0)

您不应该使用any(),因为您需要知道具体哪个元素与某个字符串匹配。只需使用常规for循环:

>>> def split(strings, lst):
...     for string in strings:
...         for el in lst:
...             if el in string:
...                 yield string.split(el)[1]
... 
>>> 
>>> for string in split(['azz', 'bzz', 'czz'], ['a', 'b', 'c']):
...     print(string)
... 
zz
zz
zz
>>> 

答案 3 :(得分:0)

如果您希望split my_string的第一个值为my_list的第一个值

,请说
my_string[0].split(my_list[0])