一点可能不算太好的设计import re
len_fix = 15
def seg_tail_split(str1: str,sep: str=r"\.|。") -> list[str]: # 分隔符可为多样的正则表达式
# 保留分割符号,置于句尾,比如标点符号
wlist = re.split(sep,str1)
seg_word = re.findall(sep,str1)
# 之前这里插入的不是空字符串而是只有一个空格的字符串,已修改
seg_word.append("") # 末尾插入一个空字符串,以保持长度和切割成分相同
wlist = [ x+y for x,y in zip(wlist,seg_word) ] # 顺序可根据需求调换
return wlist
inputstr = "王后听了大吃一惊,因为她知道这面镜子是从不说假话的,一定是那仆人蒙骗了她,她决不能容忍有任何比她更漂亮的人活在这个世上。所以,她把自己装扮成一个卖杂货的老太婆,翻山越岭来到了那七个小矮人的住处。她敲着门喊道:“卖杂货,多好的杂货呀!”白雪公主从窗户往外看去,说道:“老人家,你好!你卖的是什么啊?”她回答道:“好东西,好漂亮的东西,有各种颜色的带子和线筒。”白雪公主暗想:“这老太婆,好像并不是那种坏人,就让她进来吧。”想到这里,她跑过去打开门。老太婆进来后说道:“哎呀!看你的胸带多差呀,来吧,让我给你系上一根漂亮的新带子。”白雪公主做梦也没想到这会有危险,所以她走上前去站在了老太婆的面前。老太婆很熟练地将带子给她系在胸前,系着系着,突然,她猛地用力将带子拉紧,白雪公主便被勒得透不过气来,很快失去知觉倒在了地上,就像死去了一样。看到她的样子,恶毒的王后说道:“这下你的美丽该结束了吧!”说完放心地走了。"
res = seg_tail_split(inputstr)
print( res )
buffer = res.pop(0)
for item in res:
if len(item) == 0: # 空字符串作为结束标识
print(f'len={len(buffer)}', buffer)
else:
if len(buffer + item) > len_fix:
print(f'len={len(buffer)}', buffer)
buffer = item
else:
buffer += item
|