Python-根据结尾列表移除单词的结尾

时间:2018-11-02 08:53:52

标签: python

如果单词的结尾类似于给定列表中的任何可能的结尾,我想删除单词的结尾。我使用了以下代码:

ending = ('os','o','as','a')

def rchop(thestring):
  if thestring.endswith((ending)):
    return thestring[:-len((ending))]
  return thestring

rchop('potatos')

结果是:“ pot”。 但是我想要这个:'potat'

我该如何解决?

谢谢

3 个答案:

答案 0 :(得分:3)

您要按照字符串末尾的元组的长度(4个元素)对字符串进行切片。这就是为什么您收到错误的字符串的原因。

potat

返回:

DateTime.ParseExact()

答案 1 :(得分:3)

您可以尝试re

import re
x="potatos"
print re.sub(r"(?:os|as|a|o)$","",x)

输出:potat

|的意思是or$的意思是end of string

答案 2 :(得分:0)

或者尝试一下(很简短),(注意,即使在字符串的末尾没有ending元素时也可以使用)

def f(s):
    s2=next((i for i in ending if s.endswith(i)),'')
    return s[:len(s)-len(s2)]

现在:

print(f('potatos'))

是:

potat

符合预期!