gpt4 book ai didi

python - 将特定值写回 .csv,Python

转载 作者:行者123 更新时间:2023-11-28 17:25:24 27 4
gpt4 key购买 nike

我有一个 .csv 文件,其中包含一些我想更改的数据。它看起来像这样:

item_name,item_cost,item_priority,item_required,item_completed
item 1,11.21,2,r
item 2,411.21,3,r
item 3,40.0,1,r,c

我的代码运行了我需要的大部分内容,但我不确定如何在我的 .csv 上回写以产生此结果

item_name,item_cost,item_priority,item_required,item_completed
item 1,11.21,2,x
item 2,411.21,3,r
item 3,40.0,1,r,c

我的代码:

print("Enter the item number:")
line_count = 0
marked_item = int(input())
with open("items.csv", 'r') as f:
reader = csv.DictReader(f, delimiter=',')
for line in reader:
if line["item_required"] == 'r':
line_count += 1
if marked_item == line_count:
new_list = line
print(new_list)
for key, value in new_list.items():
if value == "r":
new_list['item_required'] = "x"
print(new_list)
with open("items.csv", 'a') as f:
writer = csv.writer(f)
writer.writerow(new_list.values())

最佳答案

这里有几个问题

  • 您正在使用 DictReader,它可以很好地读取数据,但读写数据不如原始文件,因为字典不能确保列顺序(除非您不不在乎,但大多数时候人们不希望交换列)。我只是阅读标题,找到列标题的索引,并在其余代码中使用此索引(没有字典 = 更快)
  • 当您写入时,您会附加到 csv。您必须删除旧内容,而不是追加。并使用 newline='' 否则你会得到很多空行 (python 3) 或 "wb" (python 2)
  • 当您读取时,您需要存储所有值,而不仅仅是您要更改的值,否则您将无法写回所有数据(因为您正在替换原始文件)
  • 当你修改时,你做了过于复杂的事情我只是在给定索引处用列表中的简单替换替换(毕竟你想将 r 更改为 x给定行)

这是考虑到所有上述评论的固定代码

编辑:在之后添加了您请求的功能:在 x 之后添加一个 c 如果还没有,如果需要则扩展该行

import csv

line_count = 0
marked_item = int(input())
with open("items.csv", 'r') as f:
reader = csv.reader(f, delimiter=',')
title = next(reader) # title
idx = title.index("item_required") # index of the column we target

lines=[]
for line in reader:
if line[idx] == 'r':
line_count += 1
if marked_item == line_count:
line[idx] = 'x'
# add 'c' after x (or replace if column exists)
if len(line)>idx+1: # check len
line[idx+1] = 'c'
else:
line.append('c')
lines.append(line)

with open("items.csv", 'w',newline='') as f:
writer = csv.writer(f,delimiter=',')
writer.writerow(title)
writer.writerows(lines)

关于python - 将特定值写回 .csv,Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39423635/

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