我正在读取文件并检查第二列中的数字。我执行了以下检查:
如果条件1为真,则将满足条件的值写为输出文件中的第一列。
如果条件2为真,则将满足条件的条件写为同一输出文件中的第二列。
如果条件3为真,则在同一输出文件中将满足条件的值写为colunm3。
如果条件4为真,则在同一输出文件中将满足条件的值写为colunm4。
这是我到目前为止所做的:
f = open('outfilename','r')
d = open('newfile','w')
lines = f.readlines()
for line in lines:
job = line.split()
if(float(job[2]) < 0.20):
d.write(str(job[2]))
d.write('\n')
elif(float(job[2]) < 0.30):
d.write(str(job[2]))
d.write('\n')
elif(float(job[2]) < 0.40):
d.write(str(job[2]))
d.write('\n')
elif(float(job[2]) < 0.50):
d.write(str(job[2]))
d.write('\n')
d.close()
f.close()
但我得到了这个输出:
0.061
0.0
0.012
0.0
0.079
0.03
0.109
0.044
0.019
0.035
0.018
0.019
0.004
0.147
0.111
0.184
0.121
0.005
0.299
0.091
0.077
0.245
0.345
0.323
0.456
0.399
0.499
有人可以帮我弄清楚我的代码有什么问题吗?
答案 0 :(得分:0)
我想你想做类似下面的事情:
f = open('outfilename','r')
d = open('newfile','w')
lines = f.readlines()
for line in lines:
job = float(line.split()[2])
if(job < 0.20):
d.write(str(job) + "\t\t\t\n")
elif(job < 0.30):
d.write("\t" + str(job) + "\t\t\n")
elif(job < 0.40):
d.write("\t\t" + str(job) + "\t\n")
elif(job < 0.50):
d.write("\t\t\t" + str(job) + "\n")
d.close()
f.close()
\t
是制表符,它为上面每个未使用的列引入了一个制表符空间
编辑:如果要打印所有列,如评论中已提到的那样,则需要维护一个字符串
f = open('outfilename','r')
d = open('newfile','w')
lines = f.readlines()
for line in lines:
job = float(line.split()[2])
output = "
output = output + str(job) +"\t" if job < .2 else output + "\t\t"
output = output + str(job) +"\t" if job < .3 else output + "\t\t"
output = output + str(job) +"\t" if job < .4 else output + "\t\t"
output = output + str(job) +"\t" if job < .5 else output + "\t\t"
d.write(output+"\n")
d.close()
f.close()
答案 1 :(得分:0)
关于列处理更明确一点 - 您可以通过设置only_one
f = open('outfilename','r')
d = open('newfile','w')
limits = [0.2, 0.3, 0.4, 0.5]
only_first = True
for line in f:
columns = ['' for l in limits]
job = float(line.split()[2])
for i, limit in enumerate(limits):
if job < limit:
columns[i] = str(job)
if only_first: break
d.write('\t'.join(columns) + '\n')