欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python字符串切割:str.split()和re.split()对比

程序员文章站 2022-07-14 12:09:19
...

1、str.split不支持正则及多个切割符号,不感知空格的数量,比如用空格切割,会出现下面情况。

>>> s1="aa bb  cc"
>>> s1.split(' ')
['aa', 'bb', '', 'cc']

因此split只适合简单的字符分割

2、re.split,支持正则及多个字符切割

import re
line = 'aaa bbb,ccc.ddd' # 定义一字符串,其中用空格/逗号/句号分隔
print(line)

aaa bbb,ccc.ddd
lis = re.split(r' ', line) # 用空格切割字符串
print(lis)

['aaa', 'bbb,ccc.ddd']
lis = re.split(r'( )', line) # 用空格(切割符)切割字符串,并且保留空格(保留切割符)
print(lis)

['aaa', ' ', 'bbb,ccc.ddd']
lis = re.split(r'(?:\.)', line) # 用.切割(\.转义),格式:(?:re) 切割并且不保留切割符
print(lis)
lis = re.split(r'\.', line) # 两者等效
print(lis)

['aaa bbb,ccc', 'ddd']
['aaa bbb,ccc', 'ddd']
lis = re.split(r'[.,\s]', line) # 两个以上切割符,放到[]中,r'[.,\s]':用句号/逗号/所有空格 分割字符串
print(lis)

['aaa', 'bbb', 'ccc', 'ddd']

\s表示 空格,回车,换行等空白符
+号表示一个或多个

import re

line2 = "word Word emp    hahaha; whole, cai"
print(re.split(r"\s", line2))

['word', 'Word', 'emp', '', '', '', 'hahaha;', 'whole,', 'cai']
import re

line2 = "word Word emp    hahaha; whole, cai"
print(re.split(r"\s+", line2))

['word', 'Word', 'emp', 'hahaha;', 'whole,', 'cai']