<p>我发现了一个很好的问题,可以使用:<code>endswith(tuple)</code>搜索字符串的多个结尾</p>
<p><a href="https://stackoverflow.com/questions/18351951/check-if-string-ends-with-one-of-the-strings-from-a-list">Check if string ends with one of the strings from a list</a></p>
<p>我的问题是,如何返回元组中实际找到的匹配值?如果我有多个匹配项,如何选择最佳匹配项?在</p>
<p>例如:</p>
<pre><code>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
</code></pre>
<p>在这种情况下,可以从元组中找到多个匹配项,如何处理这个问题并只返回最佳(最大)匹配,在本例中应该是:<code>'AAAAAAAAA'</code>,我想在末尾删除它(可以用正则表达式来完成)。在</p>
<p>我的意思是,一个人可以在for循环中这样做,但也许有一种更简单的Python式方法?在</p>
<pre><code>>>> s = "ERTYHGFYUUHGFREDFYAAAAAAAAAA"
>>> endings = ['AAAAA', 'AAAAAA', 'AAAAAAA', 'AAAAAAAA', 'AAAAAAAAA']
>>> max([i for i in endings if s.endswith(i)],key=len)
'AAAAAAAAA'
</code></pre>