Python实现像awk一样分割字符串
若你使用过Shell中的awk工具,会发现用它来分割字符串是非常方便的。特别是多个连续空格会被当做一个处理。
[root@localhost~]#catdemo.txt
helloworld
[root@localhost~]#
[root@localhost~]#awk'{print$1,$2}'demo.txt
helloworld
可是转换到Python上面来呢?结果可能是这样的。
>>>msg='helloworld'
>>>msg.split('')
['hello','','','','world']
与我预想的结果不符,多个空格会被分割多次。
那有什么办法可以达到awk一样的效果呢?
有两种方法。
第一种方法
不加参数,这种只适用于将多个空格当成一个空格处理,如果不是以空格为分隔符的场景,这种就不适用了。
>>>msg='helloworld'
>>>msg.split()
['hello','world']
第二种方法
使用filter来辅助,这种适用于所有的分隔符,下面以-为分隔符来举例。
>>>msg='hello----world'
>>>msg.split('-')
['hello','','','','world']
>>>
>>>filter(None,msg.split('-'))
['hello','world']
是不是很神奇,filter印象中第一个参数接收的是函数,这里直接传None居然有奇效。
查看了注释,原来是这个函数会适配None的情况,当第一个参数是None的时候,返回第二个参数(可迭代对象)中非空的值,非常方便。
换用函数的写法,可以这样
>>>msg='hello----world'
>>>msg.split('-')
['hello','','','','world']
>>>
>>>filter(lambdaitem:TrueifitemelseFalse,msg.split('-'))
['hello','world']
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。