2013-03-01 63 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?了解更多信息。