Python 3.9.0 新增内置方法:移除前缀和后缀的字符串方法
详情可以点击这里查看
这里简单做下记录
从详情中我们可以看到其具体实现
def removeprefix(self: str, prefix: str, /) -> str:
if self.startswith(prefix):
return self[len(prefix):]
else:
return self[:]
def removesuffix(self: str, suffix: str, /) -> str:
# suffix='' should not call self[:-0].
if suffix and self.endswith(suffix):
return self[:-len(suffix)]
else:
return self[:]
同时列举了几个例子
第一个列子
if test_func_name.startswith("test_"):
print(test_func_name[5:])
else:
print(test_func_name)
这里例子如果在Python 3.9.0的话,可以改善为下面的方式
print(test_func_name.removeprefix("test_"))
第二个例子
if funcname.startswith("context."):
self.funcname = funcname.replace("context.", "")
self.contextfunc = True
else:
self.funcname = funcname
self.contextfunc = False
如果使用Python 3.9.0的话,可以改善为下面的方式
if funcname.startswith("context."):
self.funcname = funcname.removeprefix("context.")
self.contextfunc = True
else:
self.funcname = funcname
self.contextfunc = False
进一步可以改善为
self.contextfunc = funcname.startswith("context.")
self.funcname = funcname.removeprefix("context.")
第三个例子
def strip_quotes(text):
if text.startswith('"'):
text = text[1:]
if text.endswith('"'):
text = text[:-1]
return text
如果使用Python 3.9.0的话,可以改善为下面的方式
def strip_quotes(text):
return text.removeprefix('"').removesuffix('"')
第四个列子
if name.endswith(('Mixin', 'Tests')):
return name[:-5]
elif name.endswith('Test'):
return name[:-4]
else:
return name
如果使用Python 3.9.0的话,可以改善为下面的方式
return (name.removesuffix('Mixin')
.removesuffix('Tests')
.removesuffix('Test'))