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



如何生成一个只接受循环中只有两次'_'的字符串的条件。

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((方法的语法为:

string.count(子字符串,start=…,end=…(

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

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

您可以使用str.count并迭代生成器表达式:

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

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

for item in list:
if item.count('_') == 2:
...

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

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

Regex^[^_]*(_[^_]*){2}$将确保这些元素中的每个元素恰好包含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]]

最新更新