问题

你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定的。

解决方案

string 对象的 split() 方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。 当你需要更加灵活的切割字符串的时候,最好使用 re.split() 方法:

>>> line = 'asdf fjdk; afed, fjek,asdf, foo'>>> import re>>> re.split(r'[;,s]s*', line)['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

讨论

函数 re.split() 是非常实用的,因为它允许你为分隔符指定多个正则模式。 比如,在上面的例子中,分隔符可以是逗号,分号或者是空格,并且后面紧跟着任意个的空格。 只要这个模式被找到,那么匹配的分隔符两边的实体都会被当成是结果中的元素返回。 返回结果为一个字段列表,这个跟 str.split() 返回值类型是一样的。

当你使用 re.split() 函数时候,需要特别注意的是正则表达式中是否包含一个括号捕获分组。 如果使用了捕获分组,那么被匹配的文本也将出现在结果列表中。比如,观察一下这段代码运行后的结果:

>>> fields = re.split(r'(;|,|s)s*', line)>>> fields['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo']>>>

获取分割字符在某些情况下也是有用的。 比如,你可能想保留分割字符串,用来在后面重新构造一个新的输出字符串:

>>> values = fields[::2]>>> delimiters = fields[1::2] + ['']>>> values['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']>>> delimiters[' ', ';', ',', ',', ',', '']>>> # Reform the line using the same delimiters>>> ''.join(v+d for v,d in zip(values, delimiters))'asdf fjdk;afed,fjek,asdf,foo'>>>

如果你不想保留分割字符串到结果列表中去,但仍然需要使用到括号来分组正则表达式的话, 确保你的分组是非捕获分组,形如 (?:...) 。比如:

>>> re.split(r'(?:,|;|s)s*', line)['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']>>>

快速了解RPA

RPA RPA技术 RPA软件 RPA培训 RPA应用 RPA机器人

领域 数据统计

沪ICP备12049238号 版权所有©上海艺赛旗软件股份有限公司 2011-2018
© 2018 B3log 开源旗下云

python 通过逗号分割字符串_「Python 秘籍」使用多个界定符分割字符串相关推荐

  1. 《Python Cookbook 3rd》笔记(2.1):使用多个界定符分割字符串

    使用多个界定符分割字符串 问题 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定的. 解法 string 对象的 split() 方法只适应于非常简单的字符串分割情形,它并 ...

  2. python字符串界定符有哪些_【Python 秘籍】使用多个界定符分割字符串

    问题 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定的. 解决方案 string 对象的 split() 方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或 ...

  3. python程序如何执行死刑_「Python基础知识」Python生成器函数

    原标题:「Python基础知识」Python生成器函数 对于程序而言,内存也是很重要的,因为程序中很多数据都是保存在内存中的,如果内存中存储的数据过多,那么系统就会崩溃,这是人们不希望发生的. 可以采 ...

  4. python通过什么对象连接数据库_「Python」连接数据库的三种方式

    连接SQLite 要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection: 连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果 ...

  5. python自动接收邮件验证码_「 python 」 python 实现发送邮件验证码

    当我们在注册一个网页时,有的网页会让必须要短信验证.邮箱验证,才可以进行账号的注册.其实,我们在项目中会遇到很多问题,比如:当我们进行爬虫的时候,很容易由于网页的改版,造成我们事先写好的爬虫突然无效, ...

  6. python画图表的库_「Python」python绘制图表

    介绍一种简单而又功能强大的绘制图形或报表的包-pyecharts,一个基于Echarts(基于JS的数据可视化库)的图标类库,除了绘制常见的折线图.柱状图.饼图.箱型图和散点图外,还可以绘制3D柱状图 ...

  7. python微信自动打卡_「微信辅助」吃鸡再也不怕了,Python用wxpy实现微信自动回复...

    我是程序员小小叶,为大家带来原创精彩技术内容. 首先安装wxpy. pip install wxpy优点:相比itchat封装了接口,使用较为方便.注意事项:wxpy 支持 Python 3.4-3. ...

  8. python从小到大的顺序输出_「小白专栏」Python中使用for循环,为什么输出结果不是按顺序?...

    欢迎各位小哥哥小姐姐阅读本的文章,对大家学习有帮助,请点赞加关注哦!!!!!!!!!! 您的点赞和关注将是我持续更新的动力呢.^v^ 有不懂的问题可以私聊我哦! 前言 如图,为什么输出的不是按Jen, ...

  9. python设计一个动物类_「Python」每日一练:设计圆类计算周长和面积、设计动物类...

    编程题 1.设计一个 Circle(圆)类,包括半径和颜色属性,编写构造方法和其他方法,计算圆的周长和面积.请编写程序验证类的功能. 2.设计一个 Animal(动物)类,包括颜色属性和叫方法.再设计 ...

  10. python 深度学习源码_「深度学习」用TensorFlow实现人脸识别(附源码,快速get技能)...

    本文将会带你使用python码一个卷积神经网络模型,实现人脸识别,操作难度比较低,动手跟着做吧,让你的电脑认出你那帅气的脸. 由于代码篇幅较长,而且最重要的缩进都没了,建议直接打开源码或者点击分享-& ...

最新文章

  1. SAP Commerce Cloud 的 build 过程
  2. OpenGL中的Shader
  3. 入门微信小程序(含实战) [第九篇] -- 下拉刷新和上拉加载
  4. 数据库名,全局数据库名,SID区别及有感
  5. Socket通讯成功案例
  6. 剑指offer面试题26-复杂链表的复制
  7. 如何通过配置tomcat或是web.xml让ie直接下载txt类型的文件
  8. WDS和DHCP配置说明
  9. 韩顺平细说jsp购物车项目--用户登录及验证
  10. linux 查看pgsql端口,如何查看postgres数据库端口
  11. 《Adobe Photoshop CS5中文版经典教程(全彩版)》—第2课2.3节概述
  12. 基于nacos搭建springboot 抽取axios
  13. Ue4首次项目的感想和心得
  14. 黑马前端基础-HTML-SE
  15. SpringBoot实现发送电子邮件
  16. 耗电排行Android,揪出Android手机电老虎!耗电应用排行
  17. 【技术认证介绍】阿里云认证介绍
  18. 生信软件(1)bioawk
  19. 从文艺到抠脚-我的程序7年之痒
  20. 洛谷P4711 【化学】 相对分子质量 简单题解

热门文章

  1. vue-cli mock
  2. 关于线程join方法的理解
  3. SQL SERVER中隐式转换的一些细节浅析
  4. 键盘皇者 RealForce 104Pro独家评测
  5. 自定义的string类
  6. 查看SQLSERVER内部数据页面的小插件Internals Viewer
  7. 11、旋转数组的最小数字
  8. Unity2018引用System.Windows.Forms.dll发布报错
  9. ppp协议 服务器,PPP上的认证协议
  10. linux注册节点报错,Linux 运维4月17日 5.102-5.103