首先是一些背景知识。我正在解析一个简单的文件格式,并希望稍后在python代码中重用结果,因此我创建了一个非常简单的类层次结构,并编写了解析器来从我正在处理的文本文件中的原始记录构造对象。
同时,我想将数据加载到遗留数据库中,加载程序文件采用简单的制表符分隔格式。最直接的方法就是做如下事情:
print "{0}\t{1}\t....".format(record.id, record.attr1, len(record.attr1), ...)
Template
类以使其更容易看到什么是什么,即:
templ = Template("$id\t$attr1\t$attr1_len\t...")
我想我可以用这张唱片来代替
substitute
调用,并为派生值添加一些附加关键字:
print templ.substitute(record, attr1_len=len(record.attr1), ...)
不幸的是,这失败了,抱怨记录实例没有属性
__getitem__
.
所以我的问题有两个:
-
我需要实施吗
__获取项目__
如果是的话怎么办?
-
有没有一种更优雅的方法来处理这样的事情,您只需要输出一堆您已经知道名称的属性?