You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则匹配标点后的双引号以拆分句子

用正则拆分SQLite导出的评论文本为单句子行

嘿,我懂你的感受——正则久不用确实容易手生,不过你的场景太友好了:专业编辑过的文本,没有那些乱七八糟的不规范用法,简单正则就能完美解决!

核心思路

专业撰写的文本里,句子的结束标志很清晰:通常是以 .、?、! 结尾,后面跟着一个或多个空白字符(空格居多)。我们可以利用这个规律,用正则匹配这些句子分隔点,把每行评论拆分成独立的句子,再逐行写入新文件。

推荐正则表达式

我推荐用这个后顾断言的正则来做拆分:

(?<=[.!?])\s+
  • (?<=[.!?]):正向后顾断言,确保我们只在句子结束符(.、!、?)之后进行拆分,不会把句子中间的标点(比如缩写里的点)当成拆分点
  • \s+:匹配一个或多个空白字符(空格、制表符都能覆盖),刚好对应句子之间的分隔空格

实操示例(Python)

假设你的源文件叫 comments.txt,可以用这段代码快速处理:

import re

# 读取源文件的所有评论行
with open("comments.txt", "r", encoding="utf-8") as input_file:
    comment_lines = input_file.readlines()

# 拆分并写入单句子文件
with open("sentences.txt", "w", encoding="utf-8") as output_file:
    for line in comment_lines:
        # 先去掉每行末尾的换行符,再拆分句子
        split_sentences = re.split(r'(?<=[.!?])\s+', line.strip())
        # 把每个句子单独写入一行
        for sentence in split_sentences:
            if sentence:  # 跳过可能出现的空字符串
                output_file.write(f"{sentence}\n")

小提醒

如果你的文本里有少量带点的缩写(比如 Mr.、Dr.),这个正则可能会误拆,但你说文本是专业编辑过的,大概率已经规避了这种情况;如果真遇到了,只需给正则加个排除规则就行,不过当前场景完全不需要~

内容的提问来源于stack exchange,提问作者Jason Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:05:48