回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想把这段代码改得更动态更具体。我想用每一列中的第一行信息作为标题来代替“numAtts”。这样,第一行也不会包含在@data下面的数据中。在</p>
<p>这是我的代码:</p>
<pre><code># -*- coding: UTF-8 -*-
import logging
from optparse import OptionParser
import sys
def main():
LEVELS = {'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL}
usage = "usage: arff automate [options]\n ."
parser = OptionParser(usage=usage, version="%prog 1.0")
#Defining options
parser.add_option("-l", "--log", dest="level_name", default="info", help="choose the logging level: debug, info, warning, error, critical")
#Parsing arguments
(options, args) = parser.parse_args()
#Mandatory arguments
if len(args) != 1:
parser.error("incorrect number of arguments")
inputPath = args[0]
# Start program ------------------
with open(inputPath, "r") as f:
strip = str.strip
split = str.split
data = [split(strip (line)) for line in f]
###############################################################
## modify here##
numAtts = len(data[0])
logging.info(" Number of attributes : "+str(numAtts) )
print "@RELATION relationData"
print ""
for e in range(numAtts):
print "@ATTRIBUTE att{0} NUMERIC".format(e)
###############################################################
classSet = set()
for e in data:
classSet.add(e[-1])
print "@ATTRIBUTE class {%s}" % (",".join(classSet))
print ""
print "@DATA"
for item in data:
print ",".join(item[0:])
if __name__ == "__main__":
main()
</code></pre>
<p>输入文件如下(制表符分隔):</p>
^{pr2}$
<p>输出文件(实际)如下:</p>
^{3}$
<p><strong>所需的</strong>输出文件如下所示:</p>
<pre><code>@RELATION relationData
@attribute 'att[F1]' numeric
@attribute 'att[F2]' numeric
@attribute 'att[F3]' numeric
@attribute 'att[F4]' numeric
@attribute 'att[F5]' numeric
@attribute 'att[F6]' {0,1}
@attribute 'class' STRING
@data
7209,3004,15302,5203,2,1,EXAMPLEA
6417,3984,16445,5546,15,1,EXAMPLEB
8822,3973,23712,7517,18,1,EXPAMPLEC
</code></pre>
<p>所以,正如您所看到的,我的代码已经差不多了,但是我不能/不确定如何将第一行标记为用于头的变量,并开始处理第2行的数据。在</p>
<p>因此,我的问题是:如何格式化输出以使用第一行作为标题?
有人有什么见解吗?谢谢!在</p>