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

如何在Python中使用正则表达式分割文本?附文本样本

在Python中使用正则表达式分割文本的实用方法

嘿,这就来教你在Python里用正则表达式分割文本,结合你给的那段议会发言文本,我给你几个实用的场景和例子!

首先,Python里处理正则的核心模块是re,分割文本主要用re.split()函数,下面一步步来:

1. 基础分割:拆分说话人与发言内容

你的文本里有特里施勒博士(FDP):女士们,先生们!这样的结构,想把说话人和发言内容分开,直接按冒号:分割就行,记得限制分割次数避免内容里的标点干扰:

import re

# 你的样本文本
text = "特里施勒博士(FDP):女士们,先生们!首先,作为议会中的难民代表之一,我想表达我的喜悦——所有党派均提出了缓解难民困境的提案,政府与反对派似乎一致认为这是一个共性问题,我们必须携手合作。因为我知道,……"

# 只分割1次,确保说话人和内容不被拆分过度
split_result = re.split(r':', text, maxsplit=1)
speaker = split_result[0].strip()
speech_content = split_result[1].strip()

print(f"说话人:{speaker}")
print(f"发言内容:{speech_content}")

2. 按句子分割:处理中文标点

如果想把整段发言拆成单个句子,针对中文里的句号、感叹号、省略号,用字符集匹配就能实现:

# 匹配中文句子结尾的标点:。!……
sentences = re.split(r'[。!……]', text)
# 过滤分割后产生的空字符串,让结果更干净
clean_sentences = [s.strip() for s in sentences if s.strip()]

for idx, sentence in enumerate(clean_sentences, 1):
    print(f"第{idx}句:{sentence}")

3. 进阶:分割多说话人的发言

如果你的完整文本里有多个议员发言(格式类似XX(党派):内容),可以用正向断言精准分割,还不会丢失说话人标识:

# 假设完整文本包含多个说话人
multi_speaker_text = "特里施勒博士(FDP):女士们,先生们!…… 穆勒议员(CDU):我完全同意特里施勒博士的观点,我们需要跨党派协作……"

# 用后发断言匹配"):"作为分割点,保留分割符在片段中
speech_segments = re.split(r'(?<=[)]:)', multi_speaker_text)

# 整理每个说话人的内容
for segment in speech_segments:
    if segment.strip():
        speaker_info, content = re.split(r':', segment.strip(), maxsplit=1)
        print(f"【{speaker_info}】:{content}")

这里的(?<=[)]:)是正则的后发断言,意思是“匹配前面是):的位置”,这样分割后每个片段都会保留说话人的标识,不会被切掉。

几个实用小技巧

  • 正则里的英文特殊字符(比如())需要加反斜杠转义,但中文括号不需要
  • 用maxsplit参数限制分割次数,避免内容里的相同符号干扰拆分
  • 分割后记得用strip()去掉多余的空格和换行符
  • 如果要更精准匹配说话人格式,可以用r'[\u4e00-\u9fa5]+([A-Z]+):'来匹配“中文人名+(大写党派缩写)+冒号”的结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:23:29