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

Python脚本检测到Rout文件含指定end_str仍误发告警邮件问题

问题原因及解决办法

核心原因

  • 待匹配行存在额外前缀:你打印的df[0]第398行内容为> #--- END -----------------------------------...,行首多了R交互模式的提示符> ,但你定义的end_str以#开头,前缀不匹配自然无法命中。
  • 固定宽度读取导致内容截断:你使用pd.read_fwf()读取文件,该方法会自动推断列宽,若推断的列宽小于实际行长度,末尾的横杠会被截断,和你写的完整版长end_str无法匹配。
  • str.contains默认配置的潜在问题:str.contains默认开启正则解析,即使本例无特殊正则字符,也可能因不可见字符、横杠实际数量和你定义的end_str不一致导致匹配失败。

修复方案

  • 简化匹配规则:不需要写全END后所有横杠,把end_str缩短为#--- END即可,规避横杠数量不匹配的问题。
  • 调整匹配逻辑:清理字符串前后空白、关闭正则匹配,避免额外字符干扰:
if not df[0].str.strip().str.contains('#--- END', regex=False, na=False).any():
  • 更换文件读取方式:改用read_csv读取整行内容,避免固定宽度读取的截断问题:
# 用不存在的分隔符让pandas把整行内容都读为第一列
df = pd.read_csv(r'Service-Now-Data.Rout', header=None, sep='|^|', engine='python')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 08:39:04