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

Python正则规则验证有效但运行后输出文件为空如何解决

问题根因

代码输出为空的核心原因是正则匹配方法用错了:

  • 你调用的compiled_re.match(line)逻辑是从字符串的最开头位置匹配正则规则,只有目标片段出现在行首才会返回匹配结果。但你读取的每行内容都是类似P:\DBI_rescans\11-06-2722A.pdf的完整路径,行首是盘符和目录前缀,根本不符合正则的数字开头规则,自然永远匹配不到内容。
  • 另外你代码里定义的filepath = r'filepath'是完全没被使用的冗余代码,不影响运行但可以删掉。
修复方案

把匹配方法从match()换成search()即可,search()会扫描整行内容,找到任意位置符合规则的第一个匹配项,完全适配你的路径提取场景。
修正后的可运行代码如下:

import re
regex = r"(\d{2}-\d{2}-\d{4}[a-zA-Z]?)"
compiled_re = re.compile(regex)
# 注意确认P.txt路径正确,显式指定编码避免不同系统乱码
with open('P.txt', 'r', encoding='utf-8') as f:
    with open("PCN.txt", "w", encoding='utf-8') as p:
        for line in f:
            match = compiled_re.search(line)
            if match:
                p.write(f"{match.group(1)}\n")

如果单行里可能存在多个符合规则的日期编号片段,把search()换成findall()遍历所有匹配结果写入即可,当前场景每行只有一个目标片段,用search()性能更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:54:21