Skip to main content

Python 3.9.0 小知识 - PEP 616:移除前缀和后缀的字符串方法

Python 3.9.0 小知识 - PEP 616:移除前缀和后缀的字符串方法

Python 3.9.0 小知识 - PEP 616:移除前缀和后缀的字符串方法

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'))

 

版权声明

版权声明

张大鹏 创作并维护的 Walkerfree 博客采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证。本文首发于 Walkerfree 博客(https://walkerfree.com/),版权所有,侵权必究。本文永久链接:https://walkerfree.com/article/265