我需要将 DOT 语言用于 python 程序,但我找不到方法

Posted

技术标签:

【中文标题】我需要将 DOT 语言用于 python 程序,但我找不到方法【英文标题】:I need to use the DOT language for a python program but I cannot find a way to do it 【发布时间】:2021-12-31 05:43:29 【问题描述】:

如果您认为这个问题很愚蠢,请道歉。我已经花了两个多小时试图理解https://pysimpleautomata.readthedocs.io/en/latest/tutorial.html 文档中的示例代码。我粘贴了示例代码:

digraph
    s1 

Pycharm 告诉我这是无效的语法。 “digraph”和“”之间应该有一些东西。

我很迷茫。我搜索了 Youtube 视频和网站,但没有一个人谈论我应该做什么。

我的完整代码:

import graphviz
from PySimpleAutomata import automata_IO, NFA, DFA
import pydot
digraph 
    s1,
    s2,
    s3,
    s4 

如果有人能告诉我是否应该在 py 文件中编写有向图的代码或如何创建点文件,我将不胜感激。提前谢谢!

【问题讨论】:

试试 digraph=s1,s2,s3,s4 根据pysimpleautomata.readthedocs.io/en/latest/tutorial.html#usage,您可以从文件中读取 DOT 代码。我想您也可以从字符串中读取它,但不能像在代码中那样将它放在 Python 脚本中。 您使用这个特定库有什么原因吗?它似乎专注于其他事情,而不是构建图表(转换等)。有关示例,请参阅graphviz.readthedocs.io/en/stable/manual.html。 @MichaelButscher,现在我正在尝试使用文本编辑器创建一个 .dot 文件,但它会自动转换为 MS dot 文件。我不确定这是否是另一个问题,因为 Pycharm 找不到我的点文件。我的代码:dfa_example = automata_IO.dfa_dot_importer('/Users/name/PycharmProjects/Assignment/file name.dot') .dot 文件是否被转换或微软只是声称它是一个 word 文件?如果您使用记事本等纯文本编辑器进行编辑,则可能没问题。由于这个问题,Graphviz 建议使用 .gv 作为扩展名。 forum.graphviz.org/t/what-is-the-file-extension-for-dot-file/35. 【参考方案1】:

您不应该直接在 Python 文件中使用它们。相反,您应该将它们写在一个单独的文本文件中,并使用dfa_dot_importer 导入它:

from PySimpleAutomata import DFA, automata_IO

your_dfa = automata_IO.dfa_dot_importer('/path/to/input.dot')

【讨论】:

把文件类型改成dot后,dot文件瞬间变成MS dot文件可以吗? @blue 没关系。事实上,它不需要有.dot 扩展名。只要是文本文件就可以了。 谢谢!!我的py文件终于可以检测到txt文件了。【参考方案2】:

我想你想创建四个节点 s1、s2、s3、s4。 所以,试试下面的代码。

import graphviz
dot = graphviz.Digraph()
dot.node('s1')
dot.node('s2')
dot.node('s3')
dot.node('s4')
print(dot.source)

这是输出

digraph 
    s1
    s2
    s3
    s4

【讨论】:

它似乎有效,但我认为代码是关于显示图表。我不敢说实话,因为我根本没有导入任何外部库。 您能否阐明您的目标,以便可以提供更多帮助。 程序需要接受来自用户的DFA或NFA表并生成表,并将DFA转换为NFA。我以为所有/大部分编码部分都是在 py 文件中完成的,但我错了。

以上是关于我需要将 DOT 语言用于 python 程序,但我找不到方法的主要内容,如果未能解决你的问题,请参考以下文章

python np.dot啥意思

使用 dot net 或任何其他语言在内存中进行 ghostscript 转换

python np.dot外积有效,但内积返回nan,太奇怪了

Linux命令之dot - 绘制DOT语言脚本描述的图形

Matlab提取网络数据

用于元编程的 Python 与 Ruby [关闭]