python分割字符串输出_python字符串分割
內置split()函數 str.split(sep=None, maxsplit=-1)
sep為自定義分割符,maxsplit為最大分割次數,默認值-1進行全部分割
注意以下區別:
str.split() 以空格分割,包括連續空格
str.split(' ') 同樣以空格分割,但是不能識別連續空格,會返回兩空格之間的空字符串
python3 doc
re模塊的split()函數 re.split(pattern, string, maxsplit=0, flags=0)
pattern分割模式
正則表達式描述pattern
官方文檔中舉例以下幾種:
r'\W+' 非單詞字符的字符作為分割符
r'(\W+)' 以括號包裹正則表達式則會在結果中保留用來分割的字符
'[a-f]+' a-f組成的字符串作為分割符
輸入
print(re.split(r'\W+','Words, words, word.'))
print(re.split(r'\W+','Words,,words,word.'))
print(re.split(r'[a-f]+','a3b4gf',flags = re.IGNORECASE))
輸出
['Words', 'words', 'word', '']
['Words', ',,', 'words', ',', 'word', '.', '']
['', '3', '4g', '']
其他參數
maxsplit和內置的split函數一樣,只不過以0作為缺省值
flags:用來修改pattern表達式的功能re.IGNORECASE忽略大小寫 其他的可用值👉更多
記錄一個奇怪的現象:
print(re.split(r'[a-f]+','a3b4gf',flags = re.IGNORECASE))
print(re.split(r'[a-f]+','a3b4gf',re.IGNORECASE))
輸出
['', '3', '4g', '']
['', '3', '4gf']
傳入參數包括"flags = "和不包括時,結果不同,原因不太清楚。此外這個測試用例表明分割符前后的內容都會包含在結果中,所以輸出開頭就有一個空字符串,這一點很古怪。
去除連續分割符之間的空字符串
以上兩個函數的簡單實用經常在結果中產生空字符串,解決辦法解決如下,使用re.split()。
使用列表推導式
[x for x in re.split(r'[,\s]',str) if x] 逗號、空格分割字符串并且去除連續的分割符
使用正則表達式
sList = re.split(r"[,\s]+",s.strip())
使用多字符字符分割時,用'+'修飾就能過濾重復分割符了。
輸入1:3 4, 7 3 輸出:['3', '4', '7', '3']
輸入2:4,, 5 輸出:['4', '5']
總結
以上是生活随笔為你收集整理的python分割字符串输出_python字符串分割的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的pandas库中如何计算每
- 下一篇: python requests 1004