当前位置: 首页 > 科技观察

Python如何像awk一样拆分字符串?

时间:2023-03-15 10:00:21 科技观察

如果你用过shell中的awk工具,你会发现用它来分割字符串非常方便。特别是,多个连续的空格被视为一个。[root@localhost~]#catdemo.txthelloworld[root@localhost~]#[root@localhost~]#awk'{print$1,$2}'demo.txthelloworld转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','','','','世界']>>>>>>过滤器(lambdaitem:TrueifitemelseFalse,msg.split('-'))['你好','世界']