我有一个自动生成的graphviz文件,有时会产生双重连接,例如
"test textanalysis" -> "development" [color="white"];
"development" -> "test textanalysis" [color="white"];
我想知道
1)如果可以在Graphviz的开始和结束时将其显示为带有双箭头的单个连接
2)或者如果你知道Python方法来过滤其中一行(我不介意丢失那些信息):或者我找不到正则表达式能够做到这一点!
答案 0 :(得分: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
选项(请参阅:Dot graph language - how to make bidirectional edges?)了解详情。