python 从字符串中删除前缀[重复]

rekjcdws  于 2023-02-07  发布在  Python
关注(0)|答案(6)|浏览(141)
    • 此问题在此处已有答案**:

How to remove the left part of a string?(22个答案)
六年前关闭了。
我试图以一种明显的Python式的方式做以下事情:

def remove_prefix(str, prefix):
    return str.lstrip(prefix)

print remove_prefix('template.extensions', 'template.')

这给出:

xtensions

这不是我所期待的(extensions)。显然(愚蠢的我),因为我错误地使用了lstrip:lstrip将移除出现在所传递的chars字符串中的所有字符,不将该字符串视为实际字符串,而是视为"要从字符串开头移除的一组字符"。
有没有从字符串开头删除子字符串的标准方法?

wb1gzix0

wb1gzix01#

正如@Boris-Verkhovskiy和@Stefan所指出的,在Python 3.9+中,您可以使用

text.removeprefix(prefix)

在旧版本中,您可以使用,但行为相同:

def remove_prefix(text, prefix):
    if text.startswith(prefix):
        return text[len(prefix):]
    return text  # or whatever
mzaanser

mzaanser2#

简短而甜蜜:

def remove_prefix(text, prefix):
    return text[text.startswith(prefix) and len(prefix):]
prdp8dxp

prdp8dxp3#

这个怎么样(有点晚):

def remove_prefix(s, prefix):
    return s[len(prefix):] if s.startswith(prefix) else s
n3schb8v

n3schb8v4#

regex解决方案(最好的方法是由@Elazar的解决方案,这只是为了好玩)

import re
def remove_prefix(text, prefix):
    return re.sub(r'^{0}'.format(re.escape(prefix)), '', text)

>>> print remove_prefix('template.extensions', 'template.')
extensions
8yoxcaq7

8yoxcaq75#

我想你可以使用str类型的方法来完成这个任务,不需要正则表达式:

def remove_prefix(text, prefix):
    if text.startswith(prefix): # only modify the text if it starts with the prefix
         text = text.replace(prefix, "", 1) # remove one instance of prefix
    return text
im9ewurl

im9ewurl6#

def remove_prefix(s, prefix):
    if s.startswith(prefix):
        return s[len(prefix):]
    else:
        return s

相关问题