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

如何用Python正则表达式提取各ID对应的多行推文文本?

提取对应ID的多行推文文本的Python正则解决方案

已知已成功提取ID列表 ['ID123', 'ID234', 'ID345', 'ID456'],需要匹配对应多行推文文本,期望结果为 ['ABC\nDEF\nGHI', 'ABC\nDEF\nGHI', '#@ABC\nDEF\nGHI@.[]', 'google.com\n123456789']。以下是可行的正则方案:

核心思路

假设输入文本结构为「ID + 换行 + 多行推文 + 换行 + 下一个ID」(或文本结尾),通过正向预查限定推文的结束边界,结合非贪婪匹配捕获完整的多行内容。

代码实现

import re

# 替换为你的实际输入文本
input_str = """ID123
ABC
DEF
GHI
ID234
ABC
DEF
GHI
ID345
#@ABC
DEF
GHI@.[]
ID456
google.com
123456789"""

# 正则模式:匹配ID及对应的多行推文
pattern = r'(ID\d+)\n(.*?)(?=\nID\d+|\Z)'
# 启用re.DOTALL让.匹配换行符
matches = re.findall(pattern, input_str, re.DOTALL)

# 转成ID-推文映射字典,方便按ID查找
tweet_map = {id_val: tweet_content for id_val, tweet_content in matches}

# 目标ID列表
target_ids = ['ID123', 'ID234', 'ID345', 'ID456']
# 获取对应推文列表
result = [tweet_map[id_] for id_ in target_ids]

print(result)
# 输出:['ABC\nDEF\nGHI', 'ABC\nDEF\nGHI', '#@ABC\nDEF\nGHI@.[]', 'google.com\n123456789']

正则模式拆解

  • (ID\d+):捕获ID字符串(匹配ID开头+连续数字)
  • \n:匹配ID与推文之间的换行分隔符
  • (.*?):非贪婪匹配任意字符(包括换行,因re.DOTALL启用),完整捕获多行推文内容
  • (?=\nID\d+|\Z):正向预查,限定推文结束位置为「下一个ID的换行开头」或「文本末尾」,避免误匹配到下一个ID

适配调整提示

  • 如果ID和推文的分隔符不是单纯换行(比如有特定标记),直接替换正则中的\n为实际分隔符即可
  • 若输入存在重复ID,字典会保留最后一个匹配的推文,可根据需求修改为列表存储所有匹配结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:05:23