python字符串界定符有哪些_【Python 秘籍】使用多个界定符分割字符串
问题
你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定的。
解决方案
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']
>>>
python字符串界定符有哪些_【Python 秘籍】使用多个界定符分割字符串相关推荐
- python字符串与列表与运算_[Python学习笔记1]Python语言基础 数学运算符 字符串 列表...
这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...
- python中for循环的用法_@Python小白,一文让你掌握Python爬虫
兴趣 我没事喜欢逛知乎,有一段时间看到了这个问题:利用爬虫技术能做到哪些很酷很有趣很有用的事情: http://t.cn/RptGOPx 觉得回答的一个个炒鸡酷炫 就对爬虫产生了浓厚的兴趣, 于是就开 ...
- python打开excel执行vba代码_“Python替代Excel Vba”系列(终):vba中调用Python
请关注本号,后续会有更多相关教程. 系列文章 学Python还不会处理Excel数据?带你用pandas玩转各种数据处理"Python替代Excel Vba"系列(二):panda ...
- python中complex函数的用法_Python中complex函数有什么用
Python中complex函数有什么用 发布时间:2020-12-15 09:34:36 来源:亿速云 阅读:71 作者:小新 这篇文章给大家分享的是有关Python中complex函数有什么用的 ...
- python c++情侣网名含义_#python和C/C++#让python和C/C++联姻
让python不在孤单,轻易而举的为python写C/C++第三方库. 我们都知道python很慢,特别是处理大数据的时候,简直慢到极致,如果在知道代码的瓶颈的时候,可以将需要大量计算的数据块放在C/ ...
- python爬虫项目实战教学视频_('[Python爬虫]---Python爬虫进阶项目实战视频',)
爬虫]---Python 爬虫进阶项目实战 1- Python3+Pip环境配置 2- MongoDB环境配置 3- Redis环境配置 4- 4-MySQL的安装 5- 5-Python多版本共存配 ...
- python三维图如何标注曲面_(python)使用colormap作为第4维,x,y,z函数绘制3d曲面 - python...
我正在尝试绘制3d曲面,其中三个维度中的每个维度都在单独的值数组中,并且每个坐标处的曲面着色是x,y,z的函数.一种numpy.pcolormesh,但是是4D而不是3D的. 3D图由下式给出: fr ...
- python系统提供构造函数传入参数_[ Python入门教程 ] Python函数定义和使用
函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果.通过使用函数,可以提高代码的重复利用率.本文主要介绍Python函数的定义.调用和函数参数设置方法. 函数的定义 Python函数定 ...
- python画完图 程序暂停运行_[Python实战]你也能写的计时器程序
文章地址:[Python实战]你也能写的计时器程序 上次,公众号介绍了如何使用 Pyqt5 制作猜数游戏界面,并介绍了如何在 Pycharm 中使用 Qt Designer 生成 UI 文件.这次,我 ...
- python判断是否为变位词_[python]变位词的判别与分类
最近老师留了个作业,是对近12万的单词进行变位词的判断与分类,最开始博主按着非常普通的想法,先写了个函数来判断两个单词是不是变位词,然后再对所有单词遍历判别.因为单词数量实在是多,所以运行时间很长.所 ...
最新文章
- 【Project Euler】530 GCD of Divisors 莫比乌斯反演
- 这个最新无人车模拟环境,让仿真路测效率提升数千倍!华人团队提出,登上Nature子刊...
- java注解简单实例
- 微信小程序开发的快速步骤方法和最大的坑
- 一篇带你搞透回溯算法
- 清华大学计算机专业学生埃朗读村,《朗读者~矣晓沅(清华大学计算机研究生 彝族)》...
- 推荐前端性能优化辅助工具Google LightHouse (灯塔)
- How to Use Command to Execute Git Push with Review from Sean
- RC电路输出波形的时域与频域分析
- 关于 Service 设计初步(MSDN节选翻译)
- rsync 自动创建目录的坑点
- (62)FPGA一维数组(reg)
- linux lvm 删除pv磁盘,如何安全的删除Linux LVM中的PV物理卷(硬盘或分区)
- NFS服务启动:rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
- Android进阶笔记18:Android 获取Button的高度、宽度、坐标值
- Elasticsearch 单模式下API的增删改查操作
- Graphics进行局部旋转的办法
- 等价类划分法测试用例设计举例
- 单片机发射红外c语言程序,基于单片机的红外发射C语言程序
- 巴比特 | 元宇宙每日必读:“由虚向实”的工业元宇宙落地情况如何?未来又将走向何方?...