本文摘自php中文网,作者不言,侵删。
本篇文章给大家带来的内容是关于Python针对任意多的分隔符拆分字符串(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1、需求
我们需要将字符串拆分为不同的字段,但是分隔符(以及分隔符之间的空格)在整个字符串中并不一致。2、解决方案
字符串对象的split()方法只能处理非常简单的情况,而且不支持多个分隔符,对分隔符周围存在的多种空格情况也无能为力。当需要一些更为灵活地功能时,应该使用re.split()方法:
1 2 3 4 5 | import re
line= 'abc def ; ghi, jkl,mno, pkr'
#分隔符:分号,都逗号,空格符,前后可以跟着任意数量的额外空格
result=re.split(r '\s*[;,\s]\s*' ,line)
print (result)
|
结果:
1 | [ 'abc' , 'def' , 'ghi' , 'jkl' , 'mno' , 'pkr' ]
|
3、分析
re.split()是很有用的,因为可以为分隔符指定多个模式。例如,在上面的解决方案中,分隔符:分号,都逗号,空格符,前后可以跟着任意数量的额外空格。同str.split()得到的结果一样,最终得到的结果是字段列表。
当使用re.split()时,需要小心正则表达式模式中的捕获组是否包含在了括号里。
如果用到了捕获组,那么匹配的文本也会包含在最终结果中。比如,看看下面的案例:
1 2 3 4 | import re
line= 'abc def ; ghi, jkl,mno, pkr'
result=re.split(r '\s*(;|,|\s)\s*' ,line)
print (result)
|
结果:
1 | [ 'abc' , ' ' , 'def' , ';' , 'ghi' , ',' , 'jkl' , ',' , 'mno' , ',' , 'pkr' ]
|
在特定的上下文中获取到分隔符也可能是有用的。例如,用分隔字符来改进字符串的输出:
1 2 3 4 5 6 7 8 9 10 11 12 | import re
line= 'abc def ; ghi, jkl,mno, pkr'
result=re.split(r '\s*(;|,|\s)\s*' ,line)
values=result[::2]
delimiters=result[1::2]+[ '' ]
print (values)
print (delimiters)
last= '' .join(v+d for v,d in zip(values,delimiters))
print (last)
|
结果:
1 2 3 | [ 'abc' , 'def' , 'ghi' , 'jkl' , 'mno' , 'pkr' ]
[ ' ' , ';' , ',' , ',' , ',' , '' ]
abc def;ghi,jkl,mno,pkr
|
如果不想在结果中看到分隔字符,但仍然想用符号来对正则表达式模式进行分组,请确保用的是非捕获组,以(?:...)的形式指定。示例如下:
1 2 3 4 5 | import re
line= 'abc def ; ghi, jkl,mno, pkr'
result=re.split(r '\s*(?:;|,|\s)\s*' ,line)
print (result)
|
结果:
1 | [ 'abc' , 'def' , 'ghi' , 'jkl' , 'mno' , 'pkr' ]
|
以上就是Python针对任意多的分隔符拆分字符串(附代码)的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
Python时间戳转换日期格式的方法是什么
Python中的模块是什么?3分钟搞懂Python中的模块问题
小白学Python买什么书?
Python函数之bin()函数详解
Python字典改变键值对的方法
Python如何安装numpy
Python运行其他程序有哪些方法?
Python针对任意多的分隔符拆分字符串(附代码)
Python中浮点型的基本内容介绍(代码示例)
Python爬虫能干什么
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Python针对任意多的分隔符拆分字符串(附代码)