Python:向后翻阅一个字符串,然后删除特定字符后的所有内容

时间:2014-03-19 22:15:03

标签: python string

我有一个字符串,在一个字符之后我希望删除字符后的所有内容。但是,问题是我在字符串中有多个这样的字符,而且只有我希望删除的最后一个字符。

例如:

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

我想知道在python中是否有一种有效的方法可以做到这一点?我曾想过在字符串中向后循环删除1到1的字符,直到找到我正在寻找的字符(例如'?')。但我想知道是否有更有效的方法来解决这个问题?

3 个答案:

答案 0 :(得分: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?'

答案 1 :(得分:1)

使用正则表达式:

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

将该群组捕获到最后?,并将其替换为捕获的群组\\1

答案 2 :(得分:1)

您可以使用str.rfindslicing

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

+ 1会导致?留在返回字符串的末尾。