当前位置:网站首页>Python cookbook 3rd note (2.1): using multiple qualifiers to split strings
Python cookbook 3rd note (2.1): using multiple qualifiers to split strings
2020-11-09 23:53:00 【Giant ship】
Use multiple qualifiers to split strings
problem
You need to split a string into multiple fields , But the separator ( And the space around it ) It's not fixed .
solution
string Object's split() Method is only suitable for very simple string segmentation , It doesn't allow multiple separators or indefinite spaces around them . When you need to cut strings more flexibly , Best use re.split() Method :
>>> line = 'asdf fjdk; afed, fjek,asdf, foo'
>>> import re
>>> re.split(r'[;,\s]\s*', line)
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
Discuss
function re.split() It's very practical , Because it allows you to specify multiple regular patterns for the separator . such as , In the example above , The separator can be a comma , Semicolons or spaces , And it's followed by any space . As long as the pattern is found , The entities on either side of the matching separator are returned as elements in the result . The return result is a list of fields , This heel str.split() The return value type is the same .
When you use re.split() Function time , It is important to note whether the regular expression contains a bracket to capture the group . If capture packets are used , Then the matched text will also appear in the result list . such as , Take a look at the results of this code run :
>>> fields = re.split(r'(;j,j\s)\s*', line)
>>> fields
['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo']
>>>
Getting split characters is also useful in some cases . such as , You may want to keep the split string , Used to reconstruct a new output string later :
>>> 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'
>>>
If you don't want to keep the split string in the result list , But if you still need to use parentheses to group regular expressions , Make sure your group is a non capture group , Form like (?:...) . such as :
>>> re.split(r'(?:,j;j\s)\s*', line)
['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
>>>
版权声明
本文为[Giant ship]所创,转载请带上原文链接,感谢
边栏推荐
猜你喜欢
Centos7 operating system security hardening series (2)
C/C++编程笔记:C语言开发坦克大战!纪念我们逝去的小霸王游戏
Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
jt-京淘项目
Interviewer: what are cache penetration, cache avalanche and cache breakdown?
编码风格:Mvc模式下SSM环境,代码分层管理
JT Jingtao project
Aikang Guobin denounced Guoxin Securities report as untrue and sent a lawyer's letter
Usage of [:] and [::] in Python
利用尾巴作为时间序列进行处理来识别鲸鱼
随机推荐
Visit 2020 PG Technology Conference
The number of more than half of the array is printed by the sword
Validation failed for one or more entities. See 'entityvalidationerrors' solution
What is the SRM system? SRM supplier management system functions
接缝雕刻算法:一种看似不可能的图像大小调整方法
一幅图像能顶16x16字!——用于大规模图像缩放识别的变压器(对ICLR 2021年论文的简要回顾)
初级工程师如何在职场生存
CUDA_ Host memory
Aikang Guobin denounced Guoxin Securities report as untrue and sent a lawyer's letter
What can CRM system help enterprises do?
Centos7 operating system security hardening series (2)
《Python Cookbook 3rd》笔记(2.1):使用多个界定符分割字符串
js label语法跳出多重循环
Software engineering in code -- source code analysis of menu project
Unity使用transform.Rotate进行三维旋转角度出现偏差
假如需要一百万个对象
探访2020 PG技术大会
Python prompt attributeerror or depreciation warning: This module was degraded solution
LinkedList源码简析
SQL intercepts the data before and after the '.'