Python中str.strip()默认去除的完整符号列表是什么?
Python中str.strip()默认去除的完整空白字符列表
Python的str.strip()默认情况下会移除所有Unicode标准定义的空白字符,这些字符的共同特征是调用str.isspace()方法会返回True,范围比string.whitespace包含的ASCII空白字符更广。
具体包含的字符分类:
ASCII范畴空白字符(对应
string.whitespace的内容):- 空格:
' '(ASCII 32) - 制表符:
'\t'(ASCII 9) - 换行符:
'\n'(ASCII 10) - 回车符:
'\r'(ASCII 13) - 垂直制表符:
'\v'(即'\x0b',ASCII 11) - 换页符:
'\f'(即'\x0c',ASCII 12)
- 空格:
扩展Unicode空白字符:
- 下一行:
'\x85'(Unicode C1控制符) - 文件分隔符:
'\x1c'(ASCII 28) - 组分隔符:
'\x1d'(ASCII 29) - 记录分隔符:
'\x1e'(ASCII 30) - 单元分隔符:
'\x1f'(ASCII 31) - 行分隔符:
'\u2028'(Unicode专用换行符) - 段落分隔符:
'\u2029'(Unicode专用段落分隔符)
- 下一行:
验证逻辑
你可以通过以下代码验证任意字符是否会被strip()默认移除:
def is_stripped_char(c): return len(c.strip()) == 0 # 测试示例字符 test_chars = [' ', '\t', '\n', '\r', '\v', '\f', '\x85', '\x1c', '\x1d', '\x1e', '\x1f', '\u2028', '\u2029'] for c in test_chars: print(f"字符 {repr(c)} 是否会被strip移除: {is_stripped_char(c)}")
运行后所有测试字符都会返回True,说明它们都会被默认的strip()移除。
为什么和string.whitespace有差异?
string.whitespace仅包含ASCII标准下的空白字符,而str.strip()的默认行为遵循Unicode标准,覆盖了更多用于文本分隔的空白类字符,这也是为什么你测试'\t\n\r\f\x85\x1c\x1d\v\u2028\u2029'.strip()会得到空字符串的原因。
内容的提问来源于stack exchange,提问作者Vasyl Kolomiets
相关产品推荐
相关产品推荐

