python - 如何使用带有选项(如或条件)的 TextFSM 解析文本

标签 python regex csv text-parsing python-textfsm

我需要从交换机/路由器中解析出'show env all',但是有不同的文本结构。

开关 A:

FAN is OK
SYSTEM TEMPERATURE is OK
System Temperature Value: 38 Degree Celsius
System Temperature State: GREEN
Yellow Threshold : 58 Degree Celsius
Red Threshold    : 68 Degree Celsius

开关 B:

FAN is OK
TEMPERATURE is OK
Temperature Value: 42 Degree Celsius
Temperature State: GREEN
Yellow Threshold : 54 Degree Celsius
Red Threshold    : 64 Degree Celsius

不同的是“系统”。我需要创建一个可用于开关 A 和 B 的 TextFSM 模板。因此,我不需要为每个开关创建 2 个 TextFSM 模板。

我当前的模板:

Value FAN (\S*) 
Value TEMPERATURE (\S*) 
Value TEMPERATURE_VALUE (\S*) 
Value TEMPERATURE_STATE (\S*)
Value YELLOW_THRESHOLD (\S*)
Value RED_THRESHOLD (\S*) 
Value POWER (\S*)
Value RPS (\S*)

Start 
  ^FAN is ${FAN}
  ^TEMPERATURE is ${TEMPERATURE}
  ^Temperature Value: ${TEMPERATURE_VALUE}
  ^Temperature State: ${TEMPERATURE_STATE}
  ^Yellow Threshold : ${YELLOW_THRESHOLD}
  ^Red Threshold    : ${RED_THRESHOLD}

*仅适用于开关 B

我应该添加 [System] Temperature Value 或其他任何内容吗?

谢谢:)

最佳答案

您可以将system 添加为可选

^(?:SYSTEM )?TEMPERATURE is (.*)$

参见 DEMO有解释

关于python - 如何使用带有选项(如或条件)的 TextFSM 解析文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44061113/

相关文章:

python - 在 tweepy 中返回实际的推文?

java - 部分路径的正则表达式

javascript - JavaScript 中分支重置组的替代方案?

Python 正则表达式 - 使用大量匹配项匹配换行符

python - 如何在 Bluemix 中使用 to_csv

csv - 在巨大的数据集上创建独特的节点和关系 NEO4J

python - 使用 stdout stdin 将数组从 C++ exe 传递到 Python

python - 如何在通过 rpy 将 SPSS 文件(.sav)导入 pandas 时保留标签?

python - 重写 save 方法以在 Django 中创建第二个自动递增字段

powershell - 使用 Powershell 将 csv 导入到 SharePoint 列表