如何将文本文件自动转换为graphviz点文件?

如何将文本文件自动转换为graphviz点文件?,graph,graphviz,text-manipulation,pygraphviz,Graph,Graphviz,Text Manipulation,Pygraphviz,我试图在graphviz的帮助下将文本文件自动转换为无向图。文本文件由以下代码组成: 0 A Relation B A Relation C B Relation C 1 0 A Relation C B Relation C 1 这里A、B和C是节点。我可能需要一个或多个图形。0和1表示每个图形的开始和结束。关系的数量也可能有所不同。我试图继续sed,但迷路了。我应该如何获得所需的图形?谢谢您的帮助。我自己不使用PyGraphViz,但是用Python进行文本处理非常简单。给定问题中

我试图在graphviz的帮助下将文本文件自动转换为无向图。文本文件由以下代码组成:

0

A
Relation
B
A
Relation
C
B
Relation
C
1

0

A
Relation
C

B
Relation
C
1

这里A、B和C是节点。我可能需要一个或多个图形。0和1表示每个图形的开始和结束。关系的数量也可能有所不同。我试图继续sed,但迷路了。我应该如何获得所需的图形?谢谢您的帮助。

我自己不使用PyGraphViz,但是用Python进行文本处理非常简单。给定问题中的输入文件,我称之为
gra1.txt
,以及Python文件
gr.py
,如下所示:

import sys, subprocess

count = 0
for line in sys.stdin:
    if line[0] == '0':
        outf = "g%d" % (count)
        g = "graph G%d {\n" % (count)
        count += 1
    elif line[0] == '1':
        g += "}\n"
        dot = subprocess.Popen(["dot", "-Tjpg", "-o%s.jpg" % outf], 
                stdin=subprocess.PIPE,universal_newlines=True)
        print (g)
        dot.communicate(g)  
    elif len(line.rstrip()) == 0:
        pass
    else:
        first = line.rstrip()
        rel = sys.stdin.readline()
        last = sys.stdin.readline().rstrip()
        g += "%s -- %s\n" % (first,last)

。。。命令
pythongra1.py我自己不使用PyGraphViz,但是用python进行文本处理非常简单。给定问题中的输入文件,我称之为
gra1.txt
,以及Python文件
gr.py
,如下所示:

import sys, subprocess

count = 0
for line in sys.stdin:
    if line[0] == '0':
        outf = "g%d" % (count)
        g = "graph G%d {\n" % (count)
        count += 1
    elif line[0] == '1':
        g += "}\n"
        dot = subprocess.Popen(["dot", "-Tjpg", "-o%s.jpg" % outf], 
                stdin=subprocess.PIPE,universal_newlines=True)
        print (g)
        dot.communicate(g)  
    elif len(line.rstrip()) == 0:
        pass
    else:
        first = line.rstrip()
        rel = sys.stdin.readline()
        last = sys.stdin.readline().rstrip()
        g += "%s -- %s\n" % (first,last)
。。。命令
pythongra1.py可以使用python库执行。要安装它,您只需启动:

pip install graphviz
然后在Python中,您可以执行以下操作:

from graphviz import Source

text_from_file = str()
with open('graphviz_dot_file.txt') as file:
    text_from_file = file.read()

src = Source(text_from_file)
src.render(test.gv', view=True ) 
您可以在

中找到更多信息。您可以使用python库来完成。要安装它,您只需启动:

pip install graphviz
然后在Python中,您可以执行以下操作:

from graphviz import Source

text_from_file = str()
with open('graphviz_dot_file.txt') as file:
    text_from_file = file.read()

src = Source(text_from_file)
src.render(test.gv', view=True ) 

你可以在

中找到更多信息。你能举一个例子,说明你期望得到的图形是什么样子的吗?我认为第二个看起来像A--C--B,第一个是三角形,三个角上有A,B和C,对吗。第一个将在三个角中包含A、B和C。第二个将包含A--C--B,即C与B和A同时连接。你能给出一个你期望得到的图是什么样的例子吗?我认为第二个看起来像A--C--B,第一个是三角形,三个角上有A,B和C,对吗。第一个将在三个角中包含A、B和C。第二个将包含一个--C--B,即C与B和A同时连接。我在尝试您的解决方案时出错,PUN-U531305L001:Desktop 531305$python graph.py回溯(上次调用):文件“graph.py”,第8行,在src.render('test.gv',view=True)文件“/Library/python/2.7/site packages/graphviz/files.py”,第226行,在呈现“在您的系统上”路径“%cmd”中运行时错误:无法执行['dot'、'-Tpdf'、'-O'、'test.gv'],请确保Graphviz可执行文件在您的系统路径上。我遇到了类似问题。看来你在寡妇身上用了Graphviz。确保系统路径变量上有Graphviz。在这里,我在尝试您的解决方案时遇到了错误,PUN-U531305L001:Desktop 531305$python graph.py回溯(最近一次调用):文件“graph.py”,第8行,src.render('test.gv',view=True)文件“/Library/python/2.7/site packages/graphviz/files.py”,第226行,在呈现“在您的系统上”路径“%cmd”中运行时错误:无法执行['dot'、'-Tpdf'、'-O'、'test.gv'],请确保Graphviz可执行文件在您的系统路径上。我遇到了类似问题。看来你在寡妇身上用了Graphviz。确保系统路径变量上有Graphviz。在这里