如何创建仅在具有“ _”两次的循环字符串中接受的条件。
a = ['q_s_e','s_e_v_e','s_v']# many more like these
在上面的列表中,仅拳头项应在循环中使用:
for i in a:
if '_' in i:
...
这花了一切。
如何做到?
答案 0 :(得分:3)
您可以从字符串中使用count函数:
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(substring,start = ...,end = ...)
另一种方法是也从头开始过滤字符串数组:
a = ['q_s_e','s_e_v_e','s_v']
for i in filter(lambda k: k.count('_') == 2, a):
print ('hooray')
答案 1 :(得分:1)
您可以使用str.count
并遍历生成器表达式:
for i in (el for el in a if el.count('_') == 2):
# do something
答案 2 :(得分:0)
您需要使用count()
方法指定条件:
for item in list:
if item.count('_') == 2:
...
答案 3 :(得分:0)
使用regex
,这将返回您想要的列表:
filtered_list = [e for e in old_list if re.match('^[^_]*(_[^_]*){2}$', e)]
正则表达式^[^_]*(_[^_]*){2}$
将确保每个元素都恰好包含2个_
答案 4 :(得分:0)
您还可以使用numpy
解决此问题并删除循环:
arr = np.array(['q_s_e','s_e_v_e','s_v'])
new_arr = arr[np.where(np.char.count(arr, "_") == 2)[0]]