gpt4 book ai didi

python - 如何检测字符串后缀并从列表中删除这些后缀元素? - Python

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:15 25 4
gpt4 key购买 nike

如何检测字符串后缀并从列表中删除这些带后缀的元素?我知道这看起来像 NLP、词干提取/词形还原任务,但该任务需要更简单的函数。

假设,如果列表中存在非后缀项,我需要删除具有 ses 后缀的元素:

alist = ['bar','barbar','foo','foos','barbares','foofoos','bares']

我需要输出:

alist = ['bar','barbar','foo','foofoos']

我已经尝试了以下但它不起作用,因为当我整理列表时,它得到 ['bar', 'barbar', 'barbares', 'bares', 'foo', ' foofoos', 'foos'] 不是 ['bar', 'bares', 'barbar', 'barbares', 'foo', 'foos', 'foofoos']

alist = ['bar','barbar','foo','foos','barbares','foofoos','bares']

prev = ""
no_s_list = []
for i in sorted(alist):
if i[-2:] == "es" and i[:-2] == prev:
continue
elif i[-1:] == "s" and i[:-1] == prev:
contine
else:
prev = i
no_s_list.append(i)

以上输出:

>>> sorted(alist)
['bar', 'barbar', 'barbares', 'bares', 'foo', 'foofoos', 'foos']

最佳答案

def rm_suffix(s,suffixes):
for suf in suffixes:
if s.endswith(suf):
return s[:-len(suf)]
return s

alist = ['bar','barbar','foo','foos','barbares','foofoos','bares']
salist = set(alist)
suffixes = ('es','s')
blist = [x for x in alist
if (not x.endswith(suffixes)) or (rm_suffix(x,suffixes) not in salist)]
print blist # ['bar', 'barbar', 'foo', 'foofoos']

关于python - 如何检测字符串后缀并从列表中删除这些后缀元素? - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15226301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com