如何将python字符串中的数字替换为连续的数字和相同的新数字进行重复

时间:2018-12-28 12:12:24

标签: python python-3.x

我需要将文件中的数字修改为任何数字(在本例中为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

2 个答案:

答案 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()