使用.endswith(tuple)测试时获取实际结尾

2024-09-26 21:56:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现了一个很好的问题,可以使用:endswith(tuple)搜索字符串的多个结尾

Check if string ends with one of the strings from a list

我的问题是,如何返回元组中实际找到的匹配值?如果我有多个匹配项,如何选择最佳匹配项?在

例如:

str= "ERTYHGFYUUHGFREDFYAAAAAAAAAA"
endings = ('AAAAA', 'AAAAAA', 'AAAAAAA', 'AAAAAAAA', 'AAAAAAAAA')
str.endswith(endings) ## this will return true for all of values inside the tuple, but how can I get which one matches the best

在这种情况下,可以从元组中找到多个匹配项,如何处理这个问题并只返回最佳(最大)匹配,在本例中应该是:'AAAAAAAAA',我想在末尾删除它(可以用正则表达式来完成)。在

我的意思是,一个人可以在for循环中这样做,但也许有一种更简单的Python式方法?在


Tags: ofthe字符串forstringifcheck结尾
3条回答
import re
str= "ERTYHGFYUUHGFREDFYAAAAAAAAAA"
endings = ['AAAAA', 'AAAAAA', 'AAAAAAA', 'AAAAAAAA', 'AAAAAAAAA']

print max([i for i in endings if re.findall(i+r"$",str)],key=len)
>>> s = "ERTYHGFYUUHGFREDFYAAAAAAAAAA"
>>> endings = ['AAAAA', 'AAAAAA', 'AAAAAAA', 'AAAAAAAA', 'AAAAAAAAA']
>>> max([i for i in endings if s.endswith(i)],key=len)
'AAAAAAAAA'

怎么样:

len(str) - len(str.rstrip('A'))

相关问题 更多 >

    热门问题