Python:使用正则表达式获取列表索引?

时间:2010-11-10 15:26:03

标签: python

在Python中,如何使用模糊匹配获取列表中项目的位置(使用list.index)?

例如,如何获取以下列表中*berry形式的所有水果的索引?

fruit_list = ['raspberry', 'apple', 'strawberry']
# Is it possible to do something like the following?
berry_fruit_at_positions = fruit_list.index('*berry') 

有人有什么想法吗?

3 个答案:

答案 0 :(得分:48)

使用正则表达式:

import re
fruit_list = ['raspberry', 'apple', 'strawberry']
berry_idx = [i for i, item in enumerate(fruit_list) if re.search('berry$', item)]

没有正则表达式:

fruit_list = ['raspberry', 'apple', 'strawberry']
berry_idx = [i for i, item in enumerate(fruit_list) if item.endswith('berry')]

答案 1 :(得分:27)

尝试:

fruit_list = ['raspberry', 'apple', 'strawberry']
[ i for i, word in enumerate(fruit_list) if word.endswith('berry') ]

返回:

[0, 2]

根据您的匹配需求,将endswith替换为不同的逻辑。

答案 2 :(得分:0)

具有功能:

import re
fruit_list = ['raspberry', 'apple', 'strawberry']
def grep(yourlist, yourstring):
    ide = [i for i, item in enumerate(yourlist) if re.search(yourstring, item)]
    return ide

grep(fruit_list, "berry$")