strip-with-multi-characters (B005)
源自 flake8-bugbear linter。
作用
检查在 .strip()
、.lstrip()
和 .rstrip()
调用中使用多字符字符串的情况。
为什么这不好?
对 .strip()
、.lstrip()
或 .rstrip()
的调用中的所有字符都会从字符串的开头和结尾处移除。如果字符串包含多个字符,读者可能会误以为正在移除前缀或后缀,而不是一组字符。
在 Python 3.9 及更高版本中,您可以使用 str.removeprefix
和 str.removesuffix
分别从字符串中移除精确的前缀或后缀,如果可能,应优先使用它们。
已知问题
作为一种启发式方法,此规则仅标记包含重复字符的多字符字符串。这允许像 .strip("xyz")
这样的用法,它从字符串的开头和结尾处移除所有出现的字符 x
、y
和 z
,但不允许 .strip("foo")
。
使用唯一的、多字符字符串可能是有意的,并且符合 .strip()
、.lstrip()
或 .rstrip()
的意图,而使用重复字符字符串很可能是一个错误。
示例
建议改为