繁体   English   中英

如果一个项目包含两个单独的字符串,则从列表中获取项目 python

[英]Get items from a list if an item contains two separate strings python

我有以下列表:

["west_sky_1_blue","west_sky_1_green","east_sky_blue","east_sky_green","west_sky_2_blue","west_sky_2_green"]

我怎样才能将包含字符串“west”和“blue”的任何项目放入列表中?(所以在这个例子中,我想将“west_sky_1_blue”和“west_sky_2_blue”放入另一个列表中。

我原来的方法如下所示,但不起作用

west_blue_list=[s for s in all_col if "west" && "blue"in s]

您的条件格式错误,请在 v 中使用'west' in v and 'blue' in v

lst = ["west_sky_1_blue","west_sky_1_green","east_sky_blue","east_sky_green","west_sky_2_blue","west_sky_2_green"]

out = [v for v in lst if 'west' in v and 'blue' in v]
print(out)

印刷:

['west_sky_1_blue', 'west_sky_2_blue']

您最初的方法有正确的想法,但语法错误。

all_col = ["west_sky_1_blue","west_sky_1_green","east_sky_blue","east_sky_green","west_sky_2_blue","west_sky_2_green"]

west_blue_list = [s for s in all_col if "west" in s and "blue" in s]

或者,使用filter

west_blue_list = list(filter(lambda s: "west" in s and "blue" in s, all_col))

或者,使用正则表达式和filter

import re
pattern = re.compile("west.*blue")
west_blue_list = list(filter(pattern.search, all_col))

前一个只会保留"west"出现在"blue"之前的字符串; 如果它在列表中,它不会保留"blue_sky_in_the_west"

或者,使用startswithendswith

west_blue_list = [s for s in all_col if s.startswith('west') and s.endswith('blue')]

这个只会保留以“west”开头并以“blue”结尾的字符串; 如果它在列表中,它不会保留"southwest_sky_blue"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM