代码如下:
import re
zh_text = "你好,世界!今天是个好日子。明天也是好日子. 后天更是好日子。你说呢?这个东西应该不错吧. 是的."
# 使用正则表达式捕获所有句号和点号
parts = re.split(r"([。\.])", zh_text)
# 去除首尾的空字符串
segments = list(filter(None, parts))
# 用于存储分块结果的列表
chunks = []
current_chunk = ""
current_length = 0
# 遍历分段并合并
for i in range(0, len(segments), 2):
text = segments[i]
delimiter = segments[i + 1] if i + 1 < len(segments) else ""
if current_length + len(text) + len(delimiter) > 1000:
chunks.append(current_chunk)
current_chunk = text + delimiter
current_length = len(text) + len(delimiter)
else:
current_chunk += text + delimiter
current_length += len(text) + len(delimiter)
# 添加最后一个块
if current_chunk:
chunks.append(current_chunk)
# 处理分块,去除多个连续空行(使用re.sub)
for chunk in chunks:
chunk = re.sub(r'\n\s*\n', '\n', chunk)
print(chunk)
print('-' * 20)
这样,输出的文本块中连续多个空行就被替换为一个空行。
**解释代码调整的关键**:
1. 使用 `re.split(r"([。\.])", zh_text)` 确保捕获并保留标点符号 `。` 和 `.` 作为分割符,而不是 `r"()"`。
2. 将 `re.sub(r'\n\s*\n', '\n', chunk)` 用于替换多个连在一起的空行,其中 `\s*` 匹配任意个空白字符,确保任何空白行都被替换成单个空行。
现在代码将正确地将文本分块,并在打印时替换掉多余的空行。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |