我写了个不用groupby也不用re正则的
from itertools import groupby
import re
def exp_str(s):
"""只用标准库函数"""
s += s[-2]
p = 0
for index, item in enumerate(s):
try:
n = index + 1
sn = s[n]
except IndexError:
_ = s[p: index]
if _:
yield _
if item.isdigit() and sn.isdigit():
continue
elif item.isalpha() and sn.isalpha():
continue
else:
yield s[p: n]
p = index + 1
def use_group(s):
"""这是用groupby的情况"""
return [''.join(list(g)) for k, g in groupby(s, key=lambda x: x.isdigit())]
def use_re(s):
"""这是用正则表达式的情况"""
return re.findall(r'[0-9]+|[a-z]+', s)
然后顺路跑了个分,如图
处理长度为10W的字符串ÿ