我需要将 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 程序,但我找不到方法的主要内容,如果未能解决你的问题,请参考以下文章
使用 dot net 或任何其他语言在内存中进行 ghostscript 转换