1

ファイルから読み取り、2 列目の数値を確認しています。次のチェックを実行しました。

  • 数値が 0.20 未満です
  • 数値が 0.30 未満です
  • 数値が 0.40 未満です
  • 数値が 0.50 未満です

条件 1 が真の場合、条件を満たす値を出力ファイルの最初の列として書き込みます。

条件 2 が真の場合、条件を満たすものを同じ出力ファイルの 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

誰かが私のコードの何が問題なのかを理解するのを手伝ってくれますか?

4

2 に答える 2

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()
于 2013-08-28T05:13:58.227 に答える
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')
于 2013-08-28T05:44:11.740 に答える