如果字串中有特殊字符,如何拆分字串并將字串保留在同一個python中?
例如:
輸入:
asdf****adec****awd**wer*
需要的輸出:
['asdf','****','adec','****','awd','**','wer','*']
我的代碼:
import re
a=input().strip()
s=re.findall('[*]|\w ', a)
print(s)
我的輸出:
['asdf', '*', '*', '*', '*', 'adec', '*', '*', '*', '*', 'awd', '*', '*', 'wer', '*']
我犯了什么錯誤??我的特殊字符是單獨列印的。
有沒有不使用模塊的方法?
uj5u.com熱心網友回復:
對我來說,你的任務最好由re.split而不是re.findall,考慮到
import re
text = "asdf****adec****awd**wer*"
parts = re.split(r'(\* )',text)
print(parts)
輸出
['asdf', '****', 'adec', '****', 'awd', '**', 'wer', '*', '']
請注意,我使用捕獲的組來通知re.split保留分隔符,并且部分中有空字串,它被認為是最后一個分隔符之后的部分,如果這是不可接受的,那么做
parts = [p for p in re.split(r'(\* )',text) if p]
注意:我使用了所謂的 raw-string 來使轉義更容易,因為*如果你想要文字有特殊含義,*你必須對其進行轉義或放入[and ]。有關使用原始字串滿足需求的討論,請參閱re檔案re。
uj5u.com熱心網友回復:
您只匹配*正則運算式中的一個字符,您需要匹配所有字符,就像\w添加 . 在沒有模塊的情況下需要答案是否有任何理由?
uj5u.com熱心網友回復:
您可以使用像(\* )with一樣的正則運算式re.split。
import re
test='asdf****adec****awd**wer*'
a=test.strip()
s=list(filter(None, re.split(r'([*] )', a)))
print(s)
將輸出:
['asdf', '****', 'adec', '****', 'awd', '**', 'wer', '*']
您可以在此演示中在線嘗試
用于filter洗掉串列中的空字串
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/443861.html
標籤:Python python-3.x
