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