前言:str.split() 和 re.split() 都可以用作字符串的切割务唐,區(qū)別是:
- str.split():單一分隔符(默認(rèn)分隔符為空格)
-
re.split():適用 單一分隔符跺撼、多個單一分隔符认罩、多個長短不一的分隔符
re.split()參數(shù):
re.split(pattern, string[, maxsplit=0, flags=0])
pattern 匹配的正則表達(dá)式
string 要匹配的字符串
maxsplit 分隔次數(shù),maxsplit=1 分隔一次孵奶,默認(rèn)為 0司忱,不限制次數(shù)。
flags 標(biāo)志位锄蹂,用于控制正則表達(dá)式的匹配方式氓仲,如:是否區(qū)分大小寫,多行匹配等等得糜。
示例1(單個分隔符)
import re
s2 = "a;b;c"
# 打印結(jié)果相同
print(s2.split(";")) # 打印結(jié)果:['a', 'b', 'c']
print(re.split(";", s2)) # 打印結(jié)果:['a', 'b', 'c']
import re
s1 = "a b s_c d"
print(s1.split()) 打印結(jié)果:['a', 'b', 's_c', 'd']
# 匹配一個空格符
print(re.split("\s", s1)) 打印結(jié)果:['a', 'b', '', 's_c', '', 'd']
# 匹配一個或多個空格符
print(re.split("\s+", s1)) 打印結(jié)果:['a', 'b', 's_c', 'd']
示例2(多個單一分隔符)
import re
s1 = "hi?how,are?you;i,am,fine"
"""
多個單一 分隔符 時 敬扛,"[]"與 "|"的 效果是一樣的,但是 請注意 使用 “|”時 某些字符 需要轉(zhuǎn)義
"""
print(re.split(r"\?|,|\;", s1)) 打印結(jié)果:['hi', 'how', 'are', 'you', 'i', 'am', 'fine']
print(re.split(r"[?,;]", s1)) 打印結(jié)果:['hi', 'how', 'are', 'you', 'i', 'am', 'fine']
示例3(多個長短不一的分隔符)
"""
多個長短 不一的的分隔符的分隔符時朝抖, 就應(yīng)該使用 "|"
\s:匹配空格
"""
import re
s1 = "nice, to;?meet\you;too"
# 注意轉(zhuǎn)義
print(re.split(r",\s|;\?|\\|;", s1)) 打印結(jié)果:['nice', 'to', 'meet', 'you', 'to']
# 簡便用法
print(re.split(r"\W+", s1)) 打印結(jié)果:['nice', 'to', 'meet', 'you', 'to']
"""
\W+:匹配一個或多個非字母進(jìn)行切割啥箭,匹配到的非字母不緩存;
(\W+):匹配一個或多個非字母進(jìn)行切割槽棍,匹配到的非字母全部緩存捉蚤;
(\W)+:匹配一個或多個非字母進(jìn)行切割,匹配到的非字母緩存最后一位炼七;
[\W]+:匹配一個或多個非字母進(jìn)行切割缆巧,匹配到的非字母不緩存;(跟\W+一樣)
[\W+]:匹配一個非字母進(jìn)行切割豌拙,匹配到的非字母不緩存(加號只是相當(dāng)于一個符號陕悬,但與\W含義重疊,無效)按傅。
"""