如何在Python中通过用户输入更新文本文件中的值(以COVID病例RECOVERED字段为例)
嘿,我来帮你搞定这个问题!你的文本文件其实是标准的CSV格式(逗号分隔值),用Python处理这类更新需求非常方便,我会分两种方法给你讲解,还会加上用户输入的功能,让你可以交互式修改指定国家的RECOVERED字段值。
方法一:用Python内置
csv模块(推荐) 这个模块是专门为CSV文件设计的,处理起来更规范,能避免很多手动拆分文本时的坑(比如字段里不小心出现逗号的情况)。
步骤1:基础修改版本
先看一个固定修改目标国家的示例,你能清楚看到整个流程:
import csv # 这里先固定要修改的国家和新值,后面改成用户输入 target_country = "COUNTRYA" new_recovered = "5" # 转成字符串保持格式一致 # 读取文件内容,把每行转成字典(表头作为键) rows = [] with open("covid_data.txt", mode="r") as file: reader = csv.DictReader(file) for row in reader: # 找到目标国家的行,更新RECOVERED字段 if row["COUNTRY"] == target_country: row["RECOVERED"] = new_recovered rows.append(row) # 把修改后的内容写回原文件 with open("covid_data.txt", mode="w", newline="") as file: # 用原表头来创建写入器 writer = csv.DictWriter(file, fieldnames=reader.fieldnames) writer.writeheader() # 先写表头 writer.writerows(rows) # 再写所有数据行
步骤2:加入用户输入功能
把上面的代码改成交互式的,让用户自己输入要修改的国家和数值:
import csv # 获取用户输入 target_country = input("请输入要修改的国家名称(比如COUNTRYA):") new_recovered = input("请输入新的RECOVERED数值:") # 简单验证输入是否为整数(可选,但能提升程序健壮性) if not new_recovered.isdigit(): print("❌ 错误:RECOVERED数值必须是整数哦!") else: # 读取文件内容 rows = [] with open("covid_data.txt", mode="r") as file: reader = csv.DictReader(file) fieldnames = reader.fieldnames # 保存表头信息 for row in reader: if row["COUNTRY"] == target_country: row["RECOVERED"] = new_recovered rows.append(row) # 写入修改后的内容 with open("covid_data.txt", mode="w", newline="") as file: writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() writer.writerows(rows) print(f"✅ 已成功更新{target_country}的RECOVERED值为{new_recovered}!")
方法二:手动处理文本行(适合简单场景)
如果你的文件格式特别简单,不会出现字段里包含逗号的情况,也可以直接按行读取拆分处理:
# 获取用户输入 target_country = input("请输入要修改的国家名称:") new_recovered = input("请输入新的RECOVERED数值:") if not new_recovered.isdigit(): print("❌ 错误:RECOVERED数值必须是整数!") else: # 读取所有行到列表里 with open("covid_data.txt", "r") as file: lines = file.readlines() # 处理表头,找到RECOVERED对应的列索引 header = lines[0].strip().split(",") recovered_index = header.index("RECOVERED") # 遍历数据行,修改目标国家的条目 for i in range(1, len(lines)): parts = lines[i].strip().split(",") if parts[0] == target_country: parts[recovered_index] = new_recovered lines[i] = ",".join(parts) + "\n" # 把修改后的内容写回文件 with open("covid_data.txt", "w") as file: file.writelines(lines) print(f"✅ 更新完成!{target_country}的RECOVERED值已改为{new_recovered}")
一些小提示
- 记得把代码里的
covid_data.txt替换成你实际的文件名哦。 - 建议修改前先备份原文件,万一操作失误也能找回数据。
- 如果你的文件特别大(比如几万行以上),可以考虑逐行处理并写入临时文件,最后替换原文件,这样能节省内存。
内容的提问来源于stack exchange,提问作者benj armintia
相关产品推荐
相关产品推荐

