1

假设's单词末尾有字符,我该如何删除它?

下面,是我尝试过的:

st = "s'ss python's is fun's "
for ch in st:
    if ch[-2:] in "'s":   # check if last two index is 's
        st = st.replace(ch, "")

输出应该是:“sss python is fun”

不知何故,它会删除所有sand ',而不仅仅是在最后。

我怎样才能删除具有“'s”的字符。

4

4 回答 4

2

我认为这可以完成您正在寻找的东西(如果我误解了 :) 抱歉)。这会将您的字符串拆分为空格,然后遍历生成的“单词”。如果单词以 结尾's,则删除该部分;如果不是,则返回整个单词。然后将结果与空格字符连接以返回一个字符串:

In [16]: st = "s'ss a python's is fun's "

In [17]: ' '.join(s if s[-2:] != "'s" else s[:-2] for s in st.split())
Out[17]: "s'ss a python is fun"
于 2012-11-25T01:26:35.750 回答
0
mylist = []
strin = "s'ss hello you's"
mylist = list(strin)
mylist.remove[-1]
print str(mylist)
#the output will be as , "s'ss hello you'"
于 2012-11-25T09:40:15.927 回答
0

我会使用正则表达式,如下所示:

>>> import re
>>> re.sub(r"'s\b", "", "s'ss python's ")  
"s'ss python "

\b匹配单词的开头或结尾)

于 2013-02-08T09:23:52.810 回答
0

首先,你的st结尾是一个空格——你可能想用str.splitor删除它str.lstrip

>>> st = "s'ss python's is fun's "
>>> st = st.strip()
>>> print(st)
s'ss python's is fun's

然后删除尾随's有许多不同的方法。

使用正则表达式是一种简洁的方式:

>>> import re
>>> re.sub("'s$", "", st)
"s'ss python's is fun"

或者您可以检查字符串是否以's并删除最后两个字符结尾:

>>> if st.endswith("'s"):
...     st = st[:-2]

不要str.rstrip用来执行此操作,因为它可能不像您预期​​的那样:

>>> st.rstrip("'s") # Bad
"s'ss python's is fun"

在这种情况下看起来是正确的,但正如文档解释的那样,“[the] 参数不是后缀;相反,它的值的所有组合都被剥离了”。例如:

>>> "lots of ssssss's".rstrip("'s")
'lots of '
于 2013-02-08T10:55:22.070 回答