split() 与 filter() 搭配去除符号
msg1='hello \t \r\n world' print(' '.join(msg1.split())) # 这里的split()可以去除所有的制表符,但不能去除一些其它符号。 # hello world msg='hello----world' print(' '.join(filter(None, msg.split('-')))) # hello world print(' '.join(msg.split())) # hello----world
是不是很神奇,filter 印象中第一个参数接收的是 函数,这里直接传 None 居然有奇效。
查看了注释,原来是这个函数会适配 None 的情况,当第一个参数是None的时候,返回第二个参数(可迭代对象)中非空的值,非常方便。
总结:
如果要去除制表符 用split()不传任何参数,可以去除。
如果要去除其它符号可以用filter(None,msg.split('-')) 来去除其它符号。