split() 与 filter() 搭配去除符号

发布时间 2023-12-14 11:24:05作者: *感悟人生*
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('-')) 来去除其它符号。