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

39 投票
3 回答
37379 浏览
提问于 2025-04-16 06:51

在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 个回答

3

这里提到的是一个函数:

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$")
71

使用正则表达式:

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')]
33

试试这个:

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

返回结果:

[0, 2]

根据你的匹配需求,把 endswith 换成其他的逻辑。

撰写回答