【问题标题】:Parse Text File into SQL Queries VBA将文本文件解析为 SQL 查询 VBA
【发布时间】:2018-08-19 03:52:03
【问题描述】:

我正在尝试自动化我们正在做的一些工作。我们致力于火灾报警系统,在测试之前,我们必须在测试之前演示程序中会发生什么。所以如果我们点击这个烟雾探测器,这将是结果。

我是一个相对较新的程序员。

面板编程位于具有一致分隔符的文本文件中,但有几个项目给我带来了一些麻烦。

[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';

括号是规则的名称,冒号左边的项目是输入,右边是输出。我们有一张包含所有设备的桌子。我想要做的是解析这个文本文件,用规则制作一个表格。然后我打算使用此数据进行选择查询,以显示何时激活此输入、此规则运行以及这些输出将激活。

花括号是根据需要在整个文件中随机插入的注释,这让我很反感。它使数据有些不标准。还有一些有多个输出,而另一些只有一个。

感谢堆栈。

【问题讨论】:

  • 那么您的问题到底是什么?您是否希望有人为您编写所有代码?如果是这样,你就来错地方了。
  • 公平点,如果我删除所有随机放置的花括号文本,我可以让它导入我想要的方式。有时花括号在规则内,有时在上方或下方。我主要是在寻找一些输入或指导。我找到了许多处理标准化数据的文章,但没有一篇可以适用于非标准数据。
  • 你想保留这些 cmets 还是直接扔掉?
  • 我希望将它们保持在理想状态,但省略它们是一个可行的选择

标签: python sql vba parsing text


【解决方案1】:

似乎他们为 excel 添加了一些功能

https://msdn.microsoft.com/library/1ed840b1-7e20-4419-ad2f-d82054c9b2ab

它们具有强大的查询功能,您可以使用这些查询来构建类似于 Regex 框架的数据解析器。它非常简单,并且在文档中详细介绍了如何使用它。

当您导入文本文件时,点击高级,它将带​​您进入查询编辑器。

【讨论】:

    【解决方案2】:

    三重编辑:此正则表达式似乎适用于您上面的示例:re.search('({.*}*)', lines)。但你应该三重检查。

    使用正则表达式查找所有花括号集并将其替换为空字符串。

    1) 读入你的文件

    2) 对行中的每一行

    2) re.sub('{regex}', '', line)

    您应该可以先使用 re.search('({regex})', line) 获取 cmets

    查看相关: Remove Sub String by using Python

    正则表达式文档: https://docs.python.org/2/library/re.html

    正则表达式测试器: https://regex101.com/ 您可以在此处复制并粘贴您的文本并对其运行不同的正则表达式,直到找到匹配的。您甚至可以让它从那里生成 python 代码,为您进行搜索。请参阅左侧的代码生成器选项卡。

    【讨论】:

    • 谢谢 Zyd,我想这会让我到达需要的地方。
    • 代码生成器非常酷,尝试将该正则表达式放在搜索中我的帖子顶部,并将您的示例文本放在文本框中,点击代码生成器按钮并将输出复制到 . .py 文件。我以前没见过它,只是尝试了一下,它应该可以让您使用一些示例代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    相关资源
    最近更新 更多