使用textwrap模块处理字符串时,句号计数逻辑异常问题求助
问题分析与修复方案
核心问题
你的代码有两个致命问题导致逻辑失效:
- 浪费了句号统计结果:你调用了
items.count(".")计算每个分片里的句号数量,但完全没把这个数值用到计数逻辑里,分片里有多个句号时根本没被统计。 - 计数逻辑错误:当前代码是每个分片遍历一次就递增计数
x,而不是每遇到一个句号才递增,这直接导致计数和实际句号数量完全不匹配。
修复后的代码
import textwrap text = "We are having a long, long long very long sentence here. Just trying to test if it works. We are trying to test. Testing we do. All day. Long." split_text = textwrap.wrap(text, width=40) period_count = 0 # 专门统计已遇到的句号数 for item in split_text: print(item) # 获取当前分片里的句号数量 current_periods = item.count(".") for _ in range(current_periods): period_count += 1 if period_count == 2: print("We hit second period") period_count = 0 # 重置计数,开始下一轮统计
代码说明
- 改用
period_count专门统计已遇到的句号总数,不再按分片计数。 - 每个分片先统计句号数量,然后逐个处理:每遇到一个句号就递增计数,当计数到2时输出提示并重置计数。
- 这种处理方式不管分片里有1个还是多个句号,都能准确统计,6个句号会触发3次提示,符合预期。
内容的提问来源于stack exchange,提问作者mnnewbilr
相关产品推荐
相关产品推荐

