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() 的意图,而使用重复字符字符串很可能是一个错误。
示例
建议改为