Python 具有符号的筛选器字符串在特定时间出现
如何使一个条件只在循环中接受只有两次“\u1”的字符串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 (
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是的。您可以从列表中筛选出不相关的项目。如果要继续执行更多流程,第一个流程还是第二个流程更好?