1

値を含むテキスト ファイルがあります (例: 0.2803739 0.280314)。最高値が最低値などに置き換えられるように、テキスト ファイルの値を置き換えたいと思います。たとえば、テキスト ファイルに 1 ~ 10 の値が含まれている場合、値 10 は値 1 に、値 9 は 2 に、値 8 は 3 に、というように置き換えます。次のスクリプトでは、3 番目の「for ループ」が無視されています。

import fileinput

text_file = r"E:\Jagu\test123.txt"
f1 = open(text_file, 'r')

unique_v = set(f1.read().split())
a = list(unique_v)

new_list1= list(a)
new_list1.sort(reverse = True )

new_list2 = new_list1
new_list2.sort(reverse = False )

l = 0
m = len (new_list2)
m = m-1

f2 = open(text_file + ".tmp", 'w')

for j in new_list1: 
    c = new_list1 [l]
    l = l + 1
    for k in new_list2:
        d = new_list2[m]
        m = m - 1
        for line in f1:
            f2.write(line.replace(c,d))
            print "replaced : " + str(c)  + " with : " + str(d)
f1.close()
f2.close()

説明が私の問題を理解するのに役立つことを願っています。私はPythonプログラミングの初心者です。どんな助けでも大歓迎です。

4

2 に答える 2

1

問題 1:

new_list2 = new_list1

これにより、同じリストが作成さnew_list2れ、new_list1ポイントされます。あなたが必要

new_list2 = list(a)

また

new_list2 = new_list[:]

問題 2:

あなたはできません

for line in f1:

から持っread()た後f1

行う

f1.seek(0)
l = f1.readlines()
for line in f1:
于 2013-03-01T04:26:08.767 に答える
0

f1.read() を呼び出した後、ファイルの最後にいるので、 f1.seek(0) を呼び出して、最後の for ループで再度読み取ることができるようにします。

Python でファイルを再度開くを参照してください。詳細については。

于 2013-03-01T04:28:09.747 に答える