Python 具有符号的筛选器字符串在特定时间出现

Python 具有符号的筛选器字符串在特定时间出现,python,string,Python,String,如何使一个条件只在循环中接受只有两次“\u1”的字符串 a = ['q_s_e','s_e_v_e','s_v']# many more like these 在上面的列表中,循环中只应使用第一项: for i in a: if '_' in i: ... 这需要一切 如何操作?您可以使用字符串中的函数: a = ['q_s_e','s_e_v_e','s_v'] for i in a: if i.count('_') == 2: print (

如何使一个条件只在循环中接受只有两次“\u1”的字符串

a = ['q_s_e','s_e_v_e','s_v']# many more like these
在上面的列表中,循环中只应使用第一项:

for i in a:
    if '_' in i:
         ...
这需要一切

如何操作?

您可以使用字符串中的函数:

a = ['q_s_e','s_e_v_e','s_v']
for i in a:
    if i.count('_') == 2:
      print ('hooray')
简单地说,count()方法搜索给定字符串中的子字符串 字符串并返回子字符串在其中存在的次数

它还使用可选参数start和end来指定 字符串中的起始和结束位置

count()方法的语法为:

count(子字符串,开始=…,结束=…)

另一种方法是在开始时过滤字符串数组:

a = ['q_s_e','s_e_v_e','s_v']
for i in filter(lambda k: k.count('_') == 2, a):
    print ('hooray')

您需要使用
count()
方法通过条件指定:

for item in list:
    if item.count('_') == 2:
        ...
您可以使用和迭代生成器表达式:

for i in (el for el in a if el.count('_') == 2):
    # do something

使用
regex
,这将返回您想要的列表:

filtered_list = [e for e in old_list if re.match('^[^_]*(_[^_]*){2}$', e)]

正则表达式将确保这些元素中的每个元素正好包含2个

您也可以使用
numpy
解决此问题并删除循环:

arr = np.array(['q_s_e','s_e_v_e','s_v'])
new_arr = arr[np.where(np.char.count(arr, "_") == 2)[0]]

你在第二段代码开头的意思是什么。这不也是你的第一个代码吗?第二个代码示例以另一种方式达到了你的愿望@user51332你是说没有if?@user51332是的。您可以从列表中筛选出不相关的项目。如果要继续执行更多流程,第一个流程还是第二个流程更好?