如何从树点文件制作 table?
how to make a table from a tree dot file?
如何从树点文件制作 table?
例如:点文件中的这一行:
0 [label="TV <= -0.239\nmse = 25.8\nsamples = 160\nvalue = 14.218"] ;
1 [label="TV <= -1.422\nmse = 7.824\nsamples = 66\nvalue = 10.015"] ;
0 -> 1 [labeldistance=2.5, labelangle=45, headlabel="True"] ;
2 [label="radio <= 0.549\nmse = 2.58\nsamples = 19\nvalue = 6.805"] ;
1 -> 2 ;
所以 table:
0,TV,-0.239
1,TV,-1.422
2,radio,0.549
.
.
.
如何在 python 中制作这个 table??
如果您希望使用自己的代码执行此操作,应用正则表达式来分离文件的每一行非常简单。这是一个为您的输入提供所需结果的示例:
import re
pat = re.compile(r'^(\d+).*?\[label="(\S+)\s+<=\s+(\S+?)\n')
with open('graph.dot') as f:
for line in f:
m = pat.match(line)
if m:
print(",".join(m.groups()))
结果:
0,TV,-0.239
1,TV,-1.422
2,radio,0.549
我不熟悉这种文件格式,所以我不知道您是否需要比这个更复杂的表达式来处理所有可能的有效输入。如果上述表达式不适用于您想要映射到结果 table 的所有可能行,您应该能够调整表达式以获得您想要的行为。
如果有一个包可以为您做这件事,这样您就不必了解文件格式的细节,那么使用它显然是一个更简洁的解决方案。我不熟悉这个特定的问题领域,所以我不会告诉你是否存在这样的事情。
如何从树点文件制作 table?
例如:点文件中的这一行:
0 [label="TV <= -0.239\nmse = 25.8\nsamples = 160\nvalue = 14.218"] ;
1 [label="TV <= -1.422\nmse = 7.824\nsamples = 66\nvalue = 10.015"] ;
0 -> 1 [labeldistance=2.5, labelangle=45, headlabel="True"] ;
2 [label="radio <= 0.549\nmse = 2.58\nsamples = 19\nvalue = 6.805"] ;
1 -> 2 ;
所以 table:
0,TV,-0.239
1,TV,-1.422
2,radio,0.549
.
.
.
如何在 python 中制作这个 table??
如果您希望使用自己的代码执行此操作,应用正则表达式来分离文件的每一行非常简单。这是一个为您的输入提供所需结果的示例:
import re
pat = re.compile(r'^(\d+).*?\[label="(\S+)\s+<=\s+(\S+?)\n')
with open('graph.dot') as f:
for line in f:
m = pat.match(line)
if m:
print(",".join(m.groups()))
结果:
0,TV,-0.239
1,TV,-1.422
2,radio,0.549
我不熟悉这种文件格式,所以我不知道您是否需要比这个更复杂的表达式来处理所有可能的有效输入。如果上述表达式不适用于您想要映射到结果 table 的所有可能行,您应该能够调整表达式以获得您想要的行为。
如果有一个包可以为您做这件事,这样您就不必了解文件格式的细节,那么使用它显然是一个更简洁的解决方案。我不熟悉这个特定的问题领域,所以我不会告诉你是否存在这样的事情。