Python3小知识|三种办法解决split结果包含空字符串的问题

加入有如下字符串需要进行分割:

s = "abc,,,fefdaf,,,123fad,,fsdfa,,,"

使用str类的split函数,得到如下结果:

977d3d46f86d782eb054283db27eb950.png

会出现很多 空字符串,有时候肯定是不希望结果也包含此种内容的。那该怎么把这些空的字符串删除掉?

一.列表推导式

使用列表推导式,加个判断即可,简写如下:

[x for x in s.split(',') if x]

结果如图:

c30c8f26657e7a76fb2836f745fc39f5.png

没有空格了,完美解决。

二.使用filter高阶函数

和上面的区别不大,代码简写如下:

list(filter(None,s.split(',')))

结果如图:

32572d8f931a91d84acb52daa66f45c1.png

可以看到,与上面的列表推导式的结果一致。

三.使用正则表达式

仔细观察后,可以发现,有用的字符串包含了[0-9]、[a-z]之间的字符,根据这个特征,可以直接进行提取:

import re
re.findall('[a-z0-9]+',s)

结果如图:

0eafe9ef9e4d2d691e87e0afea779f5a.png

这种方式最为灵活多变,可以处理很多情况,也是我最喜欢用的。

当然,也可以用字符替换的方式,这里使用str类的maketrans方法进行转换:

table = str.maketrans(',',' ')
 s.translate(table).split()

结果如图:

874dac05ca09c996482925c55224153a.png

当然,还可以进行引申,例如有如下字符串:

s = "This is a (test) !"

希望可以获取()里面的分割,代码如下:

table = str.maketrans('()','  ')
s.translate(table).split()

结果如图:

fc168f3b862ef97a37c35b5f2be070eb.png

关于 maketrans方法的使用,可以自行谷歌,在此不做延伸,感谢阅读。

AD:

e0ba0d326dfa8575c3f5b6fab1d621c9.png

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值