Python 3中编辑银行客户CSV时如何排除最后两列?
解决Python银行项目中编辑客户信息排除最后两列的问题
问题分析
你需要在编辑客户信息时跳过最后两列(account_balance和overdraft_limit),之前的错误在于把行切片当成列长度计算,导致逻辑出错。正确思路是取总列数减2,只循环前6列。
修正方案
1. 修改循环范围
将遍历所有列的循环,改为只遍历前总列数-2列:
# 原错误代码 # for i in range(len(existing_clients[0])): # 修改后代码 for i in range(len(existing_clients[0]) - 2):
这种写法比硬写数字6更灵活,哪怕后续CSV列数调整,只要最后两列是无需编辑的,代码依然有效。
2. 完整修正后的代码
if choice == "4": editClient = int(input("Please enter the index number of the client you wish to edit: ")) print("Please enter the details for each of the following: ") # 仅遍历前6列,跳过最后两列 for i in range(len(existing_clients[0]) - 2): newDetails = input("Enter new data for " + str(existing_clients[0][i]) + ": ") existing_clients[editClient][i] = newDetails changes = input("Are you sure you'd like to make these changes? Enter Yes or No") if changes == ("Yes"): with open("mock_data.csv", "w+", newline="") as file: writer = csv.writer(file) # 修正原代码笔误:将reader改为writer for row in existing_clients: writer.writerow(row) if changes == ("No"): exit()
注意:原代码中reader = csv.writer(file)是笔误,必须改为writer = csv.writer(file),否则会触发语法错误。
原理说明
len(existing_clients[0])获取表头总列数(示例中为8),减去2后得到6,对应可编辑的前6个字段:first_name、last_name、title、pronouns、dob、occupation。- 保存数据时仍写入全部列,保证CSV文件结构完整,仅在编辑阶段跳过无需修改的字段。
内容的提问来源于stack exchange,提问作者LetMeLive
相关产品推荐
相关产品推荐

