如何生成一个只接受循环中只有两次'_'的字符串的条件。
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]]