《Python Cookbook 3rd》笔记(2.1):使用多个界定符分割字符串
使用多个界定符分割字符串
问题
你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定的。
解法
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'(;j,j\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'(?:,j;j\s)\s*', line)
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
>>>
《Python Cookbook 3rd》笔记(2.1):使用多个界定符分割字符串相关推荐
- python字符串界定符有哪些_【Python 秘籍】使用多个界定符分割字符串
问题 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定的. 解决方案 string 对象的 split() 方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或 ...
- 《Python Cookbook 3rd》笔记汇总
文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...
- 《Python cookbook》笔记二
<Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...
- 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素
<Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...
- Python Cookbook 3rd Edition Documentation
Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...
- Machine Learning with Python Cookbook 学习笔记 第8章
Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...
- Machine Learning with Python Cookbook 学习笔记 第9章
Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...
- Machine Learning with Python Cookbook 学习笔记 第6章
Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...
- Python Cookbook学习笔记ch2_01
第二章,也可以去这里查看笔记噢虫洞在这里 2.1使用多个界定符分隔字符串 问题:将一个字符串分隔为多个字段,但是分隔符并不是固定的 方案:string对象的split() 只适用于简单的字符串分隔,他 ...
最新文章
- 如何卸载office201032位_微软官方安装卸载修复工具、恶意软件删除工具,了解下!...
- MYSQL锁表问题解决
- qtablewidget 数据量大效率很低_让大牛带你走进大数据分析:R基础及应用的潮流尖端,享受RHadoop...
- Openssl rand命令
- JAVA解析各种编码密钥对(DER、PEM、openssh公钥)
- kfold_机器学习gridsearchcv(网格搜索)和kfold validation(k折验证)
- 结对编程1 - 四则运算生成器的改进(201421123040,60,61)
- 4行代码满分:L1-052 2018我们要赢 (5分)
- mysql check table_修复MySQL的MyISAM表命令check table用法
- pytorch默认初始化_PyTorch的初始化
- mysql 如何对表排序_学习MySQL:对表中的数据进行排序和过滤
- 机器学习实战Ch02: k-近邻算法
- java1.7环境_java1.7环境变量设置
- android9系统WIFI提示已连接,无法访问互联网
- pymongo的简单使用
- ilm 和dlm差异_NetPro 耐特普羅資訊:技術應用 / 漫談ILM與DLM-3 由DLM著手落實ILM的精神...
- 前端——动态生成表格
- cf1693C. Keshi in Search of AmShZ(div1)【最短路,反向建图】
- 雪都阿勒泰滑雪爱好者首选地
- Redis之父Antirez谈副业与主业
热门文章
- MULTI BIN的wince 5.0,smdk2440下的实现
- java jni librtmp_librtmp 编译集成
- 教师资格证计算机考察知识点,教师资格证考试信息技术常考知识点同步练习题.docx...
- python beautiful soup 标签完全相同_Python爬取Python教程并制作成pdf
- C#多线程之旅(2)——详解线程的开始和创建
- .NET平台下开源框架
- sharepoint当流程流转到某个节点对文档进行水印操作
- CountDownLatch,同步辅助类
- PWN-PRACTICE-BUUCTF-26
- REVERSE-PRACTICE-JarvisOJ-2