我试图以明确的pythonic方式做以下事情:
def remove_prefix(str, prefix):
    return str.lstrip(prefix)
print remove_prefix('template.extensions', 'template.')
这给出了:
xtensions
这不是我期待的(extensions).显然,(愚蠢的我),因为我已经使用lstrip错误:lstrip将删除其出现在考试中的所有字符chars的字符串,不考虑该字符串作为一个真正的字符串,而是"一组字符从字符串的开头删除" .
是否有一种从字符串开头删除子字符串的标准方法?
Ela*_*zar 132
我不知道"标准方式".
def remove_prefix(text, prefix):
    if text.startswith(prefix):
        return text[len(prefix):]
    return text  # or whatever
mar*_*eau 28
短而甜蜜:
def remove_prefix(text, prefix):
    return text[text.startswith(prefix) and len(prefix):]
msh*_*yem 23
这个怎么样(有点晚):
def remove_prefix(s, prefix):
    return s[len(prefix):] if s.startswith(prefix) else s
我认为您可以使用该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
正则表达式解决方案(最好的方法是@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