如何从字符串中删除最后一次出现的子字符串?

时间:2021-02-04 09:54:58

标签: python-3.x string replace strip remove

我有一个这样的字符串- “DEMO_ANNO_COUNT_ANNO_1” 和 “DEMO_ANNO_COUNT_ANNO_25”

我需要一个通用的方法来删除最后一个 _ANNO 以及后面的任何内容,以便我有 “DEMO_ANNO_COUNT” 在这两种情况下

2 个答案:

答案 0 :(得分:3)

您可以使用 rsplit 从右侧分割字符串一次并检索结果的第一个元素:

In [1]: "DEMO_ANNO_COUNT_ANNO_1".rsplit("_ANNO", 1)[0]                          
Out[1]: 'DEMO_ANNO_COUNT'

In [2]: "DEMO_ANNO_COUNT_ANNO_25".rsplit("_ANNO", 1)[0]                         
Out[2]: 'DEMO_ANNO_COUNT'

In [3]: "DEMO_ANNO_COUNT_ANNO_25".rsplit("_ANNO", 1)                            
Out[3]: ['DEMO_ANNO_COUNT', '_25']
# The first element of that will always be
# whatever was before the last "_ANNO"

答案 1 :(得分:0)

与我的评论相同,但使用 Python 代码 我正在反转字符串。找到反转模式的索引,然后取原始字符串的切片,直到 len(ONNA_)+index 字符仍然存在

def remove_upto_last_pattern(word, pattern):
    reversed_word = word[::-1]
    pattern = pattern[::-1]
    pattern_index = reversed_word.index(pattern)
    return word[:-1*(pattern_index+len(pattern))]


if __name__ == '__main__':
    print(remove_upto_last_pattern('DEMO_ANNO_COUNT_ANNO_1', '_ANNO'))
    print(remove_upto_last_pattern('DEMO_ANNO_COUNT_ANNO_25', '_ANNO'))