1. 問題描述
将已知的字元串string按照固定長度分割,假設這裡的固定長度為5。字元串分為2種:(1) 隻包含字母或數字;(2) 包含任意字元,如下表格所示。
類别 | 字元串 | 例子 | 正則化文法 |
---|---|---|---|
1 | 隻包含 字母和數字 | asd33fghjk44lqwert5yuiop | r’\w{5}’ |
2 | 包含 任意字元 | as_d33er==tyui+5+op | r’.{5}’ |
其中,
w
針對隻包含字母和數字的string,
.
針對包含任意字元的string。
2. 解決方案
2.1 分割字元串(僅含有字母或數字)
import re
string1 = "asd33fghjk44lqwert5yuiop"
st1 = re.findall(r'\w{5}', string1)
print(st1)
#['asd33', 'fghjk', '44lqw', 'ert5y']
輸出如上,且最後不足5位的(無法比對到5個位點),直接舍棄。
2.2 分割字元串(包含任意字元)
string2 = "as_d33er==tyui+5+op"
st2 = re.findall(r'.{5}', string2)
print(st2)
# ['as_d3', '3er==', 'tyui+']
輸出如上,且最後不足5位的,直接舍棄。
2.3 正則比對相關庫介紹
這裡使用了re子產品的findall函數:
- re :這個子產品提供了正規表達式比對操作,正規表達式是一個特殊的字元序列,它能幫助你友善的檢查一個字元串是否與某種模式比對。
- re.findall:
,傳回string中所有與pattern相比對的全部字串,傳回形式為數組(更多用法參見該文檔)。findall(pattern, string, flags=0)
完結撒花🎉!