Python:解析文本文件并显示为图表
我有以下格式的文本文件:
BFrame.make()
Frame.make_bbox()
BBox.__init__(arg1=x, arg2=y, arg3=z)
: None
BBox.make()
BBox.chk_pre()
: None
: (1,1,2,2)
: None
ExConfig.__init__(filename=None)
ExConfig.setParam()
ExConfig.setfromKey(AUTO=[0.0, 0.0])
ExConfig.setFromList([('PHOT', [2.5, 3.5]), ('BV', [0.0, 0.0])])
: None
: None
: [returns a list of paramaters]
ExConfig.getKwList()
: [('A_THR', 3.0), ('B_THICK', 24),]
: None
etc..
:Frame
您在上面看到的是调用层次结构。
缩进显示哪些方法已被调用或正在调用。
任何以“:”开头的行都显示方法的返回值。
我的问题是如何解析文本文件并将其表示为调用层次结构树,其中每个节点都是一个被调用的方法。我们将属性附加到每个节点,这些属性是传递给该方法的参数。
I have text files that are in this format:
BFrame.make()
Frame.make_bbox()
BBox.__init__(arg1=x, arg2=y, arg3=z)
: None
BBox.make()
BBox.chk_pre()
: None
: (1,1,2,2)
: None
ExConfig.__init__(filename=None)
ExConfig.setParam()
ExConfig.setfromKey(AUTO=[0.0, 0.0])
ExConfig.setFromList([('PHOT', [2.5, 3.5]), ('BV', [0.0, 0.0])])
: None
: None
: [returns a list of paramaters]
ExConfig.getKwList()
: [('A_THR', 3.0), ('B_THICK', 24),]
: None
etc..
:Frame
What you see above is a call hierarchy.
The indents show which methods have been called or are calling.
Any lines that begins with ':' shows a return value of a method.
My problem is how to parse the text files and and represent this as a call hierarchy tree where each node is a method called. We attach attributes to each Node which are the args passed to that method.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来您在这里需要一个真正的解析器,因为这不是一个简单的格式。
存在许多用 Python 编写解析器的方法。例如,参见PLY。另一个是PyParsing。
或者,也许 Python 调用图 是您真正需要的?
Looks like you need a real parser here, since this is not a trivial format.
Many methods for writing parsers in Python exist. See, for example, PLY. Another is PyParsing.
Alternatively, maybe Python Call Graph is what you really need?
这是我的想法:
它给你这个:
嵌套
[hierarchy_level, call, result, kids_calls]
,其中子级的结构与父级相同。一种格式化方法:
Here's my shot at this:
which gives you this:
Nested
[ hierarchy_level, call, result, children_calls ]
, where children are structured the same as their parents.one way to format: