一直有一个错误的认知,whitespace就是空格,今天才发现,原来python中定义了6种不同的whitespace字符:
ASCII码 字符表示 显示 描述
9 \t 无 HT,horizontal tab,水平制表符
10 \n 空一行 LF,line feed,换行
11 \x0b(十六进制) □ VT,vertical tab,垂直制表符
12 \x0c(十六进制) ↑ FF,form feed,换页
13 \r 无 CR,carriage return,回车
32 \x20(十六进制) 无 space,空格
以上6中ASCII字符,都属于whitespace。
因此,str对象的strip函数,不仅可以去掉space(空格),还可以帮助你去掉换行符\n:
>>> 'abcde \n\n'.strip()
'abcde'
因此,re.sub在使用\s的时候,这6中whitespace都会被匹配:
>>> ws = 'a\tb\nc\rd e\x0b8\x0c'
>>> ws
'a\tb\nc\rd e\x0b8\x0c'
>>> re.sub('\s+','',ws)
'abcde8'
因此,str对象的split函数,在没有参数的时候,会把这6种whitespace都用上:
>>> a = '1\r\n 2\t3 4\n5'
>>> a.split()
['1', '2', '3', '4', '5']
python的这6种whitespace符号,不知道在其它变成语言种,是否通用!?
-- EOF --