Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例


Posted in Python onApril 19, 2018

本文实例讲述了Python针对任意多的分隔符拆分字符串操作。分享给大家供大家参考,具体如下:

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

解决方案:使用更为灵活的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》)

Python 相关文章推荐
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
梅尔倒谱系数(MFCC)实现
Jun 19 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
python中 * 的用法详解
Jul 10 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
python学生信息管理系统实现代码
Dec 17 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
M1芯片安装python3.9.1的实现
Feb 02 Python
matplotlib事件处理基础(事件绑定、事件属性)
Feb 03 Python
PyQt5每天必学之带有标签的复选框
Apr 19 #Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
Apr 19 #Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 #Python
一篇文章读懂Python赋值与拷贝
Apr 19 #Python
PyQt5每天必学之布局管理
Apr 19 #Python
PyQt5每天必学之创建窗口居中效果
Apr 19 #Python
PyQt5每天必学之弹出消息框
Apr 19 #Python
You might like
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
一个基于jquery的图片切换效果
2010/07/06 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
2017/02/19 Javascript
jQuery事件详解
2017/02/23 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
Python解析nginx日志文件
2015/05/11 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
C#基础面试题
2016/10/17 面试题
行政主管岗位职责
2013/11/18 职场文书
基层干部十八大感言
2014/01/19 职场文书
仓库管理计划书
2014/05/04 职场文书
运动会广播稿300字
2015/08/19 职场文书
2019年思想汇报
2019/06/20 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript