【发布时间】:2022-01-18 00:53:12
【问题描述】:
您好,我正在尝试制作一个程序来更新 csv 中的值。用户搜索 ID,如果 ID 存在,它会在该 ID 号所在的行上获取要替换的新值。这里row[0:9] 是我的ID 长度。
我的想法是从 0-9 或我的 ID 号所在的位置扫描每一行,当找到它时,我将使用 .replace() 方法替换除它之外的值。我是这样做的:
def update_thing():
replace = stud_ID +','+ stud_name +','+ stud_course +','+ stud_year
empty = []
with open(fileName, 'r+') as upFile:
for row in f:
if row[0:9] == stud_ID:
row=row.replace(row,replace)
msg = Label(upd_win, text="Updated Successful", font="fixedsys 12 bold").place(x=3,y=120)
if not row[0:9] == getID:
empty.append(row)
upFile.close()
upFile = open(fileName, 'w')
upFile.writelines(empty)
upFile.close()
但它不起作用,我需要有关如何解决此问题的想法。
【问题讨论】:
-
您能提供您的 CSV 数据的片段吗?另外,你有熊猫吗?
-
不要尝试手动执行此操作。相反,请使用 Python CSV 包
csv。它将解码和编码 CSV 文件的行,自动处理所有转义。 -
@COLDSPEED 先生,我添加了图片。
-
@TomKarzes 先生,我已经导入了 csv 包。这就是为什么 row[] 起作用的原因。但我想我猜我的实现有误?
-
CSV 包将行作为列表处理,而不是逗号分隔的字符串。您正在尝试使用带有显式逗号的字符串。不要那样做。