如果单词的结尾类似于给定列表中的任何可能的结尾,我想删除单词的结尾。我使用了以下代码:
ending = ('os','o','as','a')
def rchop(thestring):
if thestring.endswith((ending)):
return thestring[:-len((ending))]
return thestring
rchop('potatos')
结果是:“ pot”。 但是我想要这个:'potat'
我该如何解决?
谢谢
答案 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
符合预期!