我正在尝试自动化我们正在做的一些工作。我们致力于火灾报警系统,在测试之前,我们必须证明在测试之前程序会发生什么。因此,如果我们点击这个烟雾探测器,这将是结果。
我是一个相对较新的编码员。
面板编程在一个具有一致分隔符的文本文件中,但是有一些项目给我带来了一些麻烦。
[OC13_ALARM_STATUS_LED]
ALARM '*OC13*':
FAST '*_STATLED5';
[OC13_EWSD_WARNING_STATUS_LED]
ALARM '*OC13*EWSDL*':
FAST '*_STATLED6',
LEDOFF '*_STATLED5';
[OC13_TROUBLE_STATUS_LED]
TROUBLE '*OC13*':
FAST '*_STATLED7';
{***DISABLE BUTTONS***}
[0138_DIS_ACT]
SWITCH 'OC4_0138_SW1_DIS_ACT':
FAST 'OC4_0138_LED129_DIS_ACT';
[DIS_BELL]
MONITOR 'AND_0138_DIS_BELL':
DISABLE AUD '*_OC12_BELL*',
STEADY 'OC4_0138_LED129_DIS_ACT',
STEADY 'OC4_0138_LED131_DIS_BELL';
[DIS_OC12_ELEV]
MONITOR 'AND_0138_DIS_OC12_ELEV':
DISABLE NSO '*_OC12_RLY_*_ELEV*',
DISABLE NSO '*_OC12_REDCAP_*_ELEV*',
STEADY 'OC4_0138_LED129_DIS_ACT',
STEADY 'OC4_0138_LED133_DIS_OC12_ELEV';
括号是规则的名称,冒号左侧的项目是输入,右侧是输出。我们有一个包含所有设备的表。我想要做的是解析这个文本文件,制作一个包含规则的表。然后,我打算使用此数据进行选择查询,以显示何时激活此输入,此规则将运行,并且这些输出将激活。
花括号是根据需要随机插入整个文件的注释,这就是让我失望的原因。它使数据有点不标准。还有一些有多个输出,有些只有一个。
谢谢Stack。
答案 0 :(得分:0)
三重编辑:这个正则表达式似乎适用于上面的示例:re.search('({。*} *)',lines)。但你应该三检查。
使用正则表达式查找所有花括号集并用空字符串替换它们。
1)读入你的文件
2)对于行中的每一行
2)re.sub(' {regex}','',line)
您应该能够首先使用re.search('({regex})',line)获取评论
见相关: Remove Sub String by using Python
正则表达式文档: https://docs.python.org/2/library/re.html
正则表达式测试员: https://regex101.com/ 您可以在此处复制和粘贴文本,并针对它运行不同的正则表达式,直到找到匹配的文本。你甚至可以从那里生成python代码来搜索你。请参阅左侧的代码生成器选项卡。
答案 1 :(得分:0)
看起来他们为excel添加了一些功能
https://msdn.microsoft.com/library/1ed840b1-7e20-4419-ad2f-d82054c9b2ab
它们具有可用于构建类似于Regex框架的数据解析器的电源查询。它非常简单,并且有关如何使用它的文档的详细程度。
导入高级文本文件时,它会将您带到查询编辑器。