2013-03-01 60 views
1

我有一個包含值的文本文件(例如0.2803739 0.280314)。我想以最高值將被最低值替換的方式替換文本文件中的值,依此類推。例如如果文本文件包含1到10的值,則應將值10替換爲值1,將值9替換爲2,將值8替換爲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編程的初學者。任何幫助,將不勝感激。

回答

1

問題1:

new_list2 = new_list1 

這將使new_list2new_list1指向同一個列表。您需要

new_list2 = list(a) 

​​

問題2:

你不能這樣做

for line in f1: 

你從f1read()後。

f1.seek(0) 
l = f1.readlines() 
for line in f1: 
0

你叫f1.read()你在文件結束後,所以叫f1.seek(0),所以你可以在最後的看了一遍循環。

查看Re-open files in Python?瞭解更多信息。