我有一个这样的字符串- “DEMO_ANNO_COUNT_ANNO_1” 和 “DEMO_ANNO_COUNT_ANNO_25”
我需要一个通用的方法来删除最后一个 _ANNO 以及后面的任何内容,以便我有 “DEMO_ANNO_COUNT” 在这两种情况下
答案 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'))