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']