Python3小知识|三种办法解决split结果包含空字符串的问题_悦来客栈的老板的博客-程序员宅基地

技术标签: python  java  字符串  编程语言  正则表达式  

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq523176585/article/details/120600447

智能推荐

List转JSON异常错误_iferrorreturnnull的博客-程序员宅基地

”严重: Exception occurred during processing request: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: infosys.User.info, could not initialize proxy - no Sessi

Python 格雷码转换公式 i^i//2,简洁优美 pythonic_Hann Yang的博客-程序员宅基地

格雷码 Gray Code是一种二进制数字系统,其中任意两个相邻的连续值仅有一个二进位不同,包括头尾两数也只有一位不同。若不明白或者说没有接触过GrayCode,请去网上搜索更详细的概念说明……异或转换最高位不变,从第二位起每一位都是与左边一位的异或结果。一个整数右移一位再和自身异或刚好满足转换要求,如下代码非常的简短优美。return表达式中不用括号是因为>>和//的运算优先级都高于^异或运算。

分水岭算法及源代码_Sunshine_in_Moon的博客-程序员宅基地_分水岭代码

        所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式。要搞懂就不容易了。Watershed Algorithm(分水岭算法),顾名思义,就是根据分水岭的构成来考虑图像的分割。现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕山,山围水的情形。而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或都是连通的关系,就是我们可爱的分水岭(w

无人机常用的姿态定位器件及功能_wi_zero的博客-程序员宅基地

方向:经纬仪仰角:磁罗盘距离:无线电信号,激光,雷达高度:气压高度表航向:磁罗盘角速度:陀螺仪,往往用来求姿态比力(引力之外所有外力引起的加速度):加速度计惯性导航:惯性测量单元(三个相互正交的加速度计和与之安装在一起的三个陀螺仪),导航处理器对惯性测量单元的输出进行集分,产生速度,位置,和姿态。...

c语言 token,C语言中#,##和#@_weixin_39624774的博客-程序员宅基地

#include #include #define STR(a) #a //把a替换成一个“a”形式的字符串。#define PRINTF pri##ntf //link the two token together. //合并两个token。#define MYPRINTF(a,b,c) printf(#a"-"#b"-"#c"\n")/* #define CHAR(a) #@a //T...

随便推点

String类型转Json对象并获取指定数据_小林家的史莱姆的博客-程序员宅基地

Jar包使用maven添加依赖<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version></dependency>...

中华慈善总会与北京大学国际医院签署战略合作协议_热点新视界的博客-程序员宅基地

共促慢病防控助力健康中国5月8日,中华慈善总会“助医惠民公益项目”与北京大学国际医院正式签订战略合作协议,旨在充分发挥各自资源优势,共同推进心脑血管疾病等慢病综合防治工作,助力国家百万减残工程,为提升全民健康水平贡献力量。民政部原副部长陈虹,中华慈善总会秘书长边志伟、副秘书长兼财务部部长高守华、荣誉副会长张倩玉,北京大学国际医院党委书记刘洋、行政院长俞红霞、副院长冯岚、首席财务官刘珣,中华慈善总会助医惠民公益项目执行主任张子剑等出席签约仪式。心脑血管病、恶性肿瘤、糖尿病等慢性非传染性疾病是当今威胁人们

samba账户创建_Sanford048的博客-程序员宅基地_samba账号

1、首先在Ubuntu安装好samba,具体步骤为:安装samba:sudo apt-get install samba安装smbclient:sudo apt-get install smbclient安装smbfs:sudo apt-get install smbfs2、修改配置文件sudo gedit /etc/samba/smb.conf 编辑smb.conf 文件将;se...

类似于更换主题皮肤的工具类_浅浅C的博客-程序员宅基地

工具类#import @interface NEOSkinTool : NSObject+(void)saveSkinWithColor:(NSString *)color;+(UIImage *)getImageWithName:(NSString *)imageName; + (UIColor *)getColorWithKey:(NSString *

UML 的构成_haizhongyun的博客-程序员宅基地_uml的构成

当前我们所使用的UML一般都为UML1.4,最新的UML为2.0      UML有三大基本构造块,包括事物(元素)、关系以及图事物包括:(1)结构事物:类、接口、用例、协作等(2)行为事物:协作、状态机(3)分组事物:包(4)注释事物:注释包关系分为:联系、泛化(相当于继承)、依赖、实现按照UML1.4图总共有九种:用例图:用于描述系统的功能以及操作者

解决Centos7启动nginx: [emerg] open() “/var/run/nignx/nginx.pid“ failed (2: No such file or directory)_小唐编程的博客-程序员宅基地

问题描述:重启虚拟机时,再次启动nginx报错nginx: [emerg] open() “/var/run/nignx/nginx.pid” failed (2: No such file or directory)解决方法:**方法一:**1、在 虚拟机中,创建 /var/run/nginx/nginx.pid目录,原因是找不到目录的存在**方法二:**2、进入nignx的配置文件目录3、使用文本编辑器打开nginx.conf配置文件找到 #pid注释的地方 #pid logs

推荐文章

热门文章

相关标签