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:
findall(pattern, string, flags=0)
,返回string中所有与pattern相匹配的全部字串,返回形式为数组(更多用法参见该文档)。
完结撒花🎉!