首页 > 编程语言 > 详细

【python cookbook】【字符串与文本】1.针对任意多的分隔符拆分字符串

时间:2016-08-13 09:56:02      阅读:280      评论:0      收藏:0      [点我收藏+]

问题:将分隔符(以及分隔符之间的空格)不一致的字符串拆分为不同的字段;

解决方案:使用更为灵活的re.split()方法,该方法可以为分隔符指定多个模式。

说明:字符串对象的split()只能处理简单的情况,而且不支持多个分隔符,对分隔符周围可能存在的空格也无能为力。

# example.py
#
# Example of splitting a string on multiple delimiters using a regex

import re  #导入正则表达式模块

line = asdf fjdk; afed, fjek,asdf,      foo

# (a) Splitting on space, comma, and semicolon
parts = re.split(r[;,\s]\s*, line)
print(parts)

# (b) 正则表达式模式中使用“捕获组”,需注意捕获组是否包含在括号中,使用捕获组导致匹配的文本也包含在最终结果中
fields = re.split(r(;|,|\s)\s*, line)
print(fields)

# (c) 根据上文的分隔字符改进字符串的输出
values = fields[::2]
delimiters = fields[1::2]
delimiters.append(‘‘)
print(value =, values)
print(delimiters =, delimiters)
newline = ‘‘.join(v+d for v,d in zip(values, delimiters))
print(newline =, newline)

# (d) 使用非捕获组(?:...)的形式实现用括号对正则表达式模式分组,且不输出分隔符
parts = re.split(r(?:,|;|\s)\s*, line)
print(parts)
>>> ================================ RESTART ================================
>>> 
[asdf, fjdk, afed, fjek, asdf, foo]
[asdf,  , fjdk, ;, afed, ,, fjek, ,, asdf, ,, foo]
value = [asdf, fjdk, afed, fjek, asdf, foo]
delimiters = [ , ;, ,, ,, ,, ‘‘]
newline = asdf fjdk;afed,fjek,asdf,foo
[asdf, fjdk, afed, fjek, asdf, foo]
>>> 

 

【python cookbook】【字符串与文本】1.针对任意多的分隔符拆分字符串

原文:http://www.cnblogs.com/apple2016/p/5767294.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!