Skip to main content
 首页 » 编程设计

python之子列表的正则表达式

2024年12月31日30lori

我有一个列表列表,例如:

my_list = [['aaa_house', 'aaa_car', 'aaa_table'], ['aaa_love', 'aaa_hate', 'aaa_life']] 
 
desired_result = [['house', 'car', 'table'], ['love', 'hate', 'life']] 

我正在使用正则表达式来过滤所需的字符串。

我试过了:

import re 
pattern = re.compile(r'\baaa[_]') 
[pattern.search(i).group(1) for i in lista_fim] 

我试过了

def find_fims(sublist): 
    pattern = re.compile(r'\baaa_') 
    return [pattern.search(i).group(1) for i in sublist] 
 
 
answer = map(find_fims, lista_with_sublists) 

我无法使用它获得任何结果。我如何将函数应用于列表的子列表但保留我的子列表格式?我只想获得我的子列表的正确名称。

有什么帮助吗?

请您参考如下方法:

您的模式与您要丢弃的内容相匹配,并且您正在使用它来提取(不需要的内容)。所以,你只需要使用 re.sub:

import re 
 
pattern = re.compile(r'\baaa_') 
my_list = [['aaa_house', 'aaa_car', 'aaa_table'], ['aaa_love', 'aaa_hate', 'aaa_life']] 
print([[pattern.sub('', i) for i in y] for y in my_list]) 

输出:

[['house', 'car', 'table'], ['love', 'hate', 'life']] 

See the Python demo和 regex demo .

注意 如果你想在字符串的开头匹配aaa,将\b替换为^。参见 this regex demo .

请注意,您不需要将 _ 放入字符类中,_ 不是特殊的正则表达式元字符,将单个单词 char 放入字符类(此构造旨在填充多个字符或字符范围)。