gpt4 book ai didi

python - CSV修改重复&算法 "paradox",在python中

转载 作者:行者123 更新时间:2023-12-01 03:11:51 26 4
gpt4 key购买 nike

我是 python (2.7) 的初学者。这是我的文件:

data, 1234, data
data, 6868, data
data, 3545, data
data, 6868, data
data, 7777, data
data, 3545, data

我想检查重复项(仅在第 2 列中)并将重复项之一递增 +1,如下所示:

data, 1234, data
data, 6868, data
data, 3545, data
data, 6869, data
data, 7777, data
data, 3546, data

我做了类似的事情,但它只写重复的行:

entries = set()
for row in reader:
key = row[2]
if key in entries:
aaa = row[2]
bbb = int(aaa) + 1
ccc = str(bbb)
entries.add(ccc)
else:
entries.add(key)
writer.writerow(row)

我不明白该怎么做。

但我问自己另一个问题:如果增加的数字现在是重复的,我该如何检查?它不会创建无限循环吗?

最佳答案

当您迭代文件时,将第 2 列的值存储在 set 中,当遇到重复值时,使用 while 加 1,直到该值变为独特的。存储新值,并使用 csv.writer 将整行写入文件:

import csv

data = set()
with open ('task1.txt', 'rb') as file_in, open ('output.txt', 'wb') as fileout:
reader = csv.reader(file_in)
writer = csv.writer(fileout)
for line in reader:
idx = int(line[1])
while idx in data:
idx += 1
data.add(idx)
line[1] = str(idx)

writer.writerow(line)

注意:在Python2.7中,我们打开文件句柄buffer模式(即rb而不是r,但这在Python3中是不必要的.

关于python - CSV修改重复&算法 "paradox",在python中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42829645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com