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

AP2*_*257 27 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') 
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

Ste*_*ski 51

使用正则表达式:

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

没有正则表达式:

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

  • 我仍然觉得奇怪,这是在 python 中执行这个相当常见的操作的最简单方法。在 R 中,它只是 grep('berry$', berry_idx)。是否没有模块可以实现更简洁的搜索和获取整数位置的方法? (3认同)
  • 应该选择这个答案作为答案. (2认同)

eum*_*iro 28

尝试:

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

收益:

[0, 2]
Run Code Online (Sandbox Code Playgroud)

endswith根据您的匹配需求替换不同的逻辑.