0

我有一个自动生成的graphviz文件,有时会产生双重连接,例如

"test textanalysis" -> "development" [color="white"];
"development" -> "test textanalysis" [color="white"];

我想知道

1)如果可以在 Graphviz 的开始和结束处将其显示为带有双箭头的单个连接

2)或者,如果您知道一种 Python 方法来过滤掉其中的一行(我不介意丢失该信息):我找不到能够做到这一点的正则表达式!

4

1 回答 1

2

您可以尝试这样的事情来过滤重复的边缘:

import re

edges = {}

with open(dot_file) as fr:
    for line in fr:
        key = tuple(sorted(re.findall('"([a-z ]+)"', line)[:2]))
        edges.setdefault(key, []).append(line.strip())

for v in edges.values():
    if len(v) > 1:
        print re.sub("\[(.+)\]", '[\\1, dir="both"]', v[0])
    else:
        print v[0]

您也可以尝试使用concentrate=true选项(请参阅:点图语言 - 如何制作双向边?)以获取详细信息。

于 2013-11-06T10:54:38.560 回答