我需要将文件中的数字修改为任何数字(在本例中为7)以从1开始并连续进行。但是,如果下一行中的数字相同,则不应打印新的连续数字,而应给出相同的新数字。
我将能够基于列位置访问所有这些数字。我感兴趣的数字仅在第5和第6列。
更清楚
我的输入文件具有:
YYY 7
YYY 7
YYY 7
YYY 8
YYY 8
YYY 9
YYY 9
YYY 9
YYY 11
YYY 11
我想要输出:
YYY 1
YYY 1
YYY 1
YYY 2
YYY 2
YYY 3
YYY 3
YYY 3
YYY 4
YYY 4
答案 0 :(得分:0)
您可以使用基于defaultdict
的简单技巧来获取基于1
的连续“索引”:
from collections import defaultdict
ind = defaultdict(lambda: len(ind) + 1)
for row in data:
row[4] = ind[row[4]]
这将使用[1..n]
中的新值创建旧值到新值的一致映射。
答案 1 :(得分:0)
这应该可以解决问题!可能会有更好的方法。
希望这会有所帮助!欢呼!
def main():
mapping={}
counter=0
with open("./input.txt") as f, open("./output.txt","w") as output:
for line in f.readlines():
line=line.replace("\n","")
parts= line.split(" ")
x=parts[0]
y=parts[1]
if y not in mapping:
counter+=1
mapping[y]=counter
output.write("{} {}".format(x,mapping[y]))
print(("{} {}".format(x,mapping[y])))
if __name__ == '__main__':
main()