Python中字符串的处理技巧分享

这篇文章给大家分享了python中字符串的处理技巧,包括拆分含有多种分隔符的字符串、判断字符串a是否以字符串b开头或结尾、调整字符串中文本的格式已经将多个小字符串拼接成一个大的字符串等,感兴趣的朋友们可以通过阅读下文来学习。

一、如何拆分含有多种分隔符的字符串?

实际案例

我们要把某个字符串依据分隔符号拆分不同的字符段,该字符串包含多种不同的分隔符,例如:

s = 'asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd'

登录后复制

立即学习“Python免费学习笔记(深入)”;

其中,,,都是分隔符,如何处理?

解决方案

连续使用split()方法,每次处理一种分隔符

# 使用Python2 def mySplit(s,ds): res = [s] for d in ds: t = [] map(lambda x: t.extend(x.split(d)), res) res = t return [x for x in res if x] s = 'asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd' result = mySplit(s, ';,|') print(result)

登录后复制

立即学习“Python免费学习笔记(深入)”;

C:UsersAdministrator>C:PythonPython27python.exe E:python-intensive-trainings2.py ['asd', 'aad', 'dasd', 'dasd', 'sdasd', 'asd', 'Adas', 'sdasd', 'Asdasd', 'd', 'asd']

登录后复制

立即学习“Python免费学习笔记(深入)”;

使用正则表达式的re.split()方法,一次性拆分字符串

>>> import re >>> re.split('[,;|]+','asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd') ['asd', 'aad', 'dasd', 'dasd', 'sdasd', 'asd', 'Adas', 'sdasd', 'Asdasd', 'd', 'asd']

登录后复制

立即学习“Python免费学习笔记(深入)”;

二、如何判断字符串a是否以字符串b开头或结尾?

实际案例

如某目录有如下文件:

quicksort.c graph.py heap.java install.sh stack.cpp ......

登录后复制

立即学习“Python免费学习笔记(深入)”;

现在需要给.sh和.py结尾的文件夹上可执行权限

解决方案

使用字符串的startswith()和endswith()方法

>>> import os, stat >>> os.listdir('./') ['heap.java', 'quicksort.c', 'stack.cpp', 'install.sh', 'graph.py'] >>> [name for name in os.listdir('./') if name.endswith(('.sh','.py'))] ['install.sh', 'graph.py'] >>> os.chmod('install.sh', os.stat('install.sh').st_mode | stat.S_IXUSR)

登录后复制

立即学习“Python免费学习笔记(深入)”;

[root@iZ28i253je0Z t]# ls -l install.sh -rwxr--r-- 1 root root 0 Sep 15 18:13 install.sh

登录后复制

立即学习“Python免费学习笔记(深入)”;

三、如何调整字符串中文本的格式?

实际案例

某软件的日志文件,其中日期格式为yyy-mm-dd:

2016-09-15 18:27:26 statu unpacked python3-pip:all 2016-09-15 19:27:26 statu half-configured python3-pip:all 2016-09-15 20:27:26 statu installd python3-pip:all 2016-09-15 21:27:26 configure asdasdasdas:all python3-pip:all

登录后复制

立即学习“Python免费学习笔记(深入)”;

需要把其中日期改为美国日期的格式mm/dd/yyy, 2016-09-15 –> 09/15/2016,要如何处理?

解决方案

使用正则表达式re.sub()方法做字符串替换

利用正则表达式的捕获组,捕获每个部分内容,在替换字符串中各个捕获组的顺序。

>>> log = '2016-09-15 18:27:26 statu unpacked python3-pip:all' >>> import re # 按顺序 >>> re.sub('(d{4})-(d{2})-(d{2})', r'//' , log) '09/15/2016 18:27:26 statu unpacked python3-pip:all' # 使用正则表达式的分组 >>> re.sub('(?Pd{4})-(?Pd{2})-(?Pd{2})', r'g/g/g' , log) '09/15/2016 18:27:26 statu unpacked python3-pip:all'

登录后复制

立即学习“Python免费学习笔记(深入)”;

四、如何将多个小字符串拼接成一个大的字符串?

实际案例

在设计某网络程序时,我们自定义了一个基于UDP的网络协议,按照固定次序向服务器传递一系列参数:

hwDetect: "" gxDepthBits: "" gxResolution: "" gxRefresh: "" fullAlpha: "" lodDist: "" DistCull: ""

登录后复制

立即学习“Python免费学习笔记(深入)”;

在程序中我们将各个参数按次序收集到列表中:

["","","","","","",""]

登录后复制

立即学习“Python免费学习笔记(深入)”;

最终我们要把各个参数拼接成一个数据包进行发送:

""

登录后复制

立即学习“Python免费学习笔记(深入)”;

解决方案

迭代列表,连续使用’+’操作依次拼接每一个字符串

>>> for n in ["","","","","","",""]: ... result += n ... >>> result ''

登录后复制

立即学习“Python免费学习笔记(深入)”;

使用str.join()方法,更加快速的拼接列表中所有字符串

>>> result = ''.join(["","","","","","",""]) >>> result ''

登录后复制

立即学习“Python免费学习笔记(深入)”;

如果列表中有数字,可以使用生成器进行转换:

>>> hello = [222,'sd',232,'2e',0.2] >>> ''.join(str(x) for x in hello) '222sd2322e0.2'

登录后复制

立即学习“Python免费学习笔记(深入)”;

五、如何对字符串进行左, 右, 居中对齐?

实际案例

某个字典中存储了一系列属性值:

{ 'ip':'127.0.0.1', 'blog': 'www.anshengme.com', 'title': 'Hello world', 'port': '80' }

登录后复制

立即学习“Python免费学习笔记(深入)”;

在程序中,我们想以以下格式将其内容输出,如何处理?

ip : 127.0.0.1 blog : www.anshengme.com title : Hello world port : 80

登录后复制

立即学习“Python免费学习笔记(深入)”;

解决方案

使用字符串的str.ljust() , str.rjust,str.cente()进行左右居中对齐

>>> info = {'ip':'127.0.0.1','blog': 'www.anshengme.com','title': 'Hello world','port': '80'} # 获取字典中的keys最大长度 >>> max(map(len, info.keys())) 5 >>> w = max(map(len, info.keys())) >>> for k in info: ... print(k.ljust(w), ':',info[k]) ... # 获取到的结果 port : 80 blog : www.anshengme.com ip : 127.0.0.1 title : Hello world

登录后复制

立即学习“Python免费学习笔记(深入)”;

使用format()方法,传递类似’20’,’^20’参数完成同样任务

>>> for k in info: ... print(format(k,'^'+str(w)), ':',info[k]) ... port : 80 blog : www.anshengme.com ip : 127.0.0.1 title : Hello world

登录后复制

立即学习“Python免费学习笔记(深入)”;

六、如何去掉字符串中不需要的字符?

实际案例

过滤掉用户输入卡后多余的空白字符: anshengm.com@gmail.com

过滤某windows下编辑文本中的”: hello word

去掉文本中的unicode组合符号(音调): ‘ní hǎo, chī fàn’

解决方案

字符串strip() , lstrip(),rstrip()方法去掉字符串两端字符

>>> email = ' anshengm.com@gmail.com ' >>> email.strip() 'anshengm.com@gmail.com' >>> email.lstrip() 'anshengm.com@gmail.com ' >>> email.rstrip() ' anshengm.com@gmail.com' >>>

登录后复制

立即学习“Python免费学习笔记(深入)”;

删除某个固定位置的字符,可以使用切片+拼接的方法

>>> s[:3] + s[4:] 'abc123'

登录后复制

立即学习“Python免费学习笔记(深入)”;

字符串的replace()方法或正则表达式re.sub()删除任意位置字符

>>> s = 'abc123xyz' >>> s.replace('', '') 'abc123xyz'

登录后复制

立即学习“Python免费学习笔记(深入)”;

使用re.sub()删除多个

>>> import re >>> re.sub('[]','', string) 'abc123xyzopq'

登录后复制

立即学习“Python免费学习笔记(深入)”;

字符串translate()方法,可以同时删除多种不同字符

>>> import string >>> s = 'abc123xyz' >>> s.translate(string.maketrans('abcxyz','xyzabc')) 'xyz123abc'

登录后复制

立即学习“Python免费学习笔记(深入)”;

>>> s = 'asd23Ads' >>> s.translate(None, '') 'asd23Ads'

登录后复制

立即学习“Python免费学习笔记(深入)”;

# python2.7 >>> i = u'ní hǎo, chī fàn' >>> i u'niu0301 hau030co, chiu0304 fau0300n' >>> i.translate(dict.fromkeys([0x0301, 0x030c, 0x0304, 0x0300])) u'ni hao, chi fan'

登录后复制

立即学习“Python免费学习笔记(深入)”;

总结

以上就是为大家整理的Python中字符串的处理技巧,文中通过案例、解决方案以及实例来演示如何解决,对大家学习或者使用python具有一定的参考借鉴价值。有需要的可以参考借鉴。

更多Python中字符串的处理技巧分享相关文章请关注PHP中文网!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2279173.html

(0)
上一篇 2025年2月27日 17:15:02
下一篇 2025年2月27日 17:15:19

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论