【问题标题】:Python text parser for C++ program?C++程序的Python文本解析器?
【发布时间】:2018-12-04 18:34:06
【问题描述】:

任何尝试过在 C++ 和 Python 中进行文本解析的人都会注意到在工作量和难度上的巨大差异,而 Python 通常是两者中更容易的。出于这个原因,我更愿意用 Python 编写一个我用 C++ 编写的程序可以使用的文本解析函数。

我曾想过将.py 文件编译成.dll,但根据我所做的谷歌搜索,这似乎是不可能的。我可以将.py 文件编译成.exe 文件,然后将要解析的文本作为命令行参数传递。但是,我宁愿在每次需要解析文本时都生成多个进程。

我想知道是否有可能在 C++ 程序中使用 Python 函数或有人能想到的其他方式。我只是想避免使用 C++ 来解析文本。

感谢您的宝贵时间。

【问题讨论】:

  • 您可以将 python 解释器构建到 c++ 程序中,但我很确定这将比在 c++ 中解析文本更困难。 docs.python.org/3/extending/embedding.html
  • @AlanBirtles 确实如此。该文档页面对于如何嵌入它非常模糊。它实际上只提供了在嵌入后使用 的代码示例。我很头疼。为了时间的缘故,我可能会找到一种方法来使用.py 可执行文件以我能找到的最有效的方式解析我的所有文本。谢谢。
  • 这给你留下了一个(相当繁琐的)问题,即从 Python 获取结果并且必须转换它(即为 Python 数据结构编写“解析器”)或直接使用它。我认为用 C++ 编写解析器可能会更困难,但是编写 Python->C++ 接口也不是在公园里散步而且它很无聊,而且需要时间花在不那么无聊的事情上。

标签: python c++ windows


【解决方案1】:

是的,你可以。你必须在你的应用程序中嵌入 python 解释器。

您的调用代码类似于:

Py_Initialize();
PyRun_SimpleString("import parser\n"
                   "parse(" + program_code + ")\n");

a whole section in the docs dedicated to embedding Python

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2019-07-05
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多