gpt4 book ai didi

python - 使用seek(0)方法修改csv文件会创建不需要的重复输出

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:13 24 4
gpt4 key购买 nike

我正在尝试对我的 csv 文件进行以下调整。- 操作 1 - 插入一列并填充变量- 操作 2 - 删除文件的前 32 行我尝试使用seek()方法重置文件位置来实现此目的。

运行时,csv 文件通过操作 1 插入我的列变量。操作 2 附加一组重复的记录,减去 32 个删除项,且未插入任何列。

我想要的是应用于原始数据集的 2 个操作。我在想seek)可能不是我需要的。我还应该考虑什么?注意:数据文件很小

我的代码;

with open(temp_filename, 'r', newline='') as inf, \
open(local_filename, 'w', newline='') as outf:
reader = csv.reader(inf)
writer = csv.writer(outf)
all = []
row = next(reader)

# insert column and fill
for row in (reader):
all.append([str(ASXCode)] + row)
writer.writerows(all)

inf.seek(0)

# delete first 32 rows
for _ in range(32): # skip first 32 rows
next(reader)
writer.writerows(reader) # copy the rest

最佳答案

您可以跳过 32 行而不处理它们,无需以这种方式从输出中“删除”它们。

在将数据复制到另一个文件时添加列:

from itertools import islice

with open(temp_filename, 'r', newline='') as inf, \
open(local_filename, 'w', newline='') as outf:
reader = csv.reader(inf)
writer = csv.writer(outf)
next(islice(reader, 32, 32), None) # skip 32 rows

# write to output file with extra column
for row in (reader):
writer.writerow([str(ASXCode)] + row)

您只需要在必须重新读取文件中的所有数据时进行查找,但很少真正需要这样做。作为跳过的替代方法,您可以在写入输出 CSV 之前从 all 列表中删除 32 个条目; del all[:32] 会为您完成此操作。

关于python - 使用seek(0)方法修改csv文件会创建不需要的重复输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34571941/

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