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

使用Python正则表达式提取文本日期对应内容块并按日期命名存储

你可以直接用正则一次性匹配日期和对应的文本块,不需要分开匹配日期和内容,实现逻辑如下:

实现方案(Python示例)

核心正则规则

你可以用带命名分组的正则同时捕获日期和对应的文本块,规则如下:

-{2,}\s*(?P<date>[^-]+?)\s*-{2,}\s*(?P<content>~{2,}.*?~{2,})

规则说明:

  • 先匹配至少2个连续横杠,对应日期行的前后分隔符
  • 捕获中间无横杠的内容为date分组,自动过滤前后多余空格
  • 随后匹配到由~开头和结尾的文本块,捕获为content分组,开启re.DOTALL后.可以匹配包括换行在内的所有字符

完整代码示例

import re

# 读取源文件内容
with open("你的源文件路径.txt", "r", encoding="utf-8") as f:
    raw_content = f.read()

# 编译正则,开启DOTALL让.匹配换行
pattern = re.compile(r'-{2,}\s*(?P<date>[^-]+?)\s*-{2,}\s*(?P<content>~{2,}.*?~{2,})', re.DOTALL)

content_dict = {}
# 遍历所有匹配结果
for match in pattern.finditer(raw_content):
    file_name = match.group("date")
    block_content = match.group("content")
    # 存储为本地文件,文件名直接用日期
    with open(f"{file_name}.txt", "w", encoding="utf-8") as f:
        f.write(block_content)
    # 如果需要存为变量,直接存入字典即可
    content_dict[file_name] = block_content

效果说明

  • 代码会自动跳过最前面无日期匹配的第一个文本块,正好提取你需要的第二、第三、第四块内容
  • 生成的文件名就是对应日期,文件内容就是完整的波浪线包裹的文本块
  • 如果不需要保留文本块前后的多余空格,可以对block_content调用strip()方法后再写入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 12:48:02