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 编程的初学者。任何帮助,将不胜感激。

4

2 回答 2

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:
于 2013-03-01T04:26:08.767 回答
0

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

请参阅在 Python 中重新打开文件?了解更多信息。

于 2013-03-01T04:28:09.747 回答