我试图找到并替换文本文件中的值

时间:2013-03-01 04:11:04

标签: python python-2.6

我有一个包含值的文本文件(例如,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编程的初学者。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

问题1:

new_list2 = new_list1

这会使new_list2new_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:

答案 1 :(得分:0)

在你调用f1.read()后,你就在文件的末尾,所以调用f1.seek(0),这样你就可以在最后一个for循环中再次读取它。

有关详细信息,请参阅Re-open files in Python?