Python:反向遍历字符串,删除特定字符后的内容

2 投票
3 回答
2202 浏览
提问于 2025-04-17 23:02

我有一个字符串,我想在某个字符后面删除所有内容。不过问题是,这个字符串里有多个这样的字符,我只想删除最后一个字符后面的内容。

比如:

str = "howdie how are you? are you good? sdfsdf"
str = str.RemoveEverythingAfterLast("?")
str = "howdie how are you? are you good?"

我在想有没有什么高效的方法可以在Python中做到这一点?我曾考虑过从字符串的后面开始循环,逐个删除字符,直到找到我想要的那个字符(比如例子中的'?')。但我在想有没有更有效的方法来处理这个问题?

3 个回答

1

你可以使用 str.rfind切片 来实现这个功能:

>>> string = "howdie how are you? are you good? sdfsdf"
>>> string[:string.rfind("?") + 1]
'howdie how are you? are you good?'
>>>

这里的 + 1 会让 ? 保留在返回的字符串的末尾。

1

使用正则表达式:

str = re.sub("(.*\?).*", "\\1", str)

这个方法是把从开始到最后一个?之间的内容都抓住,然后用抓到的内容\\1来替换掉。

7

使用 str.rpartition() 方法:

''.join(string.rpartition('?')[:2])

示例:

>>> string = "howdie how are you? are you good? sdfsdf"
>>> ''.join(string.rpartition('?')[:2])
'howdie how are you? are you good?'

撰写回答