如何将Python字典写入CSV避免空行?实现CSV与字典互转及文件更新
问题解决方法
两个问题的修复方案:
1. 消除CSV空行
Python的csv.writer在Windows环境下默认会自动添加额外换行符,导致每行之间出现空行。解决办法是打开文件时指定newline=''参数,让csv模块自行处理换行逻辑。
2. 合并输入输出为同一文件
添加新条目后,直接将更新后的字典写回原input.csv文件,而非生成新的output.csv,这样下次运行程序就能直接读取到更新后的内容。
修改后的完整代码
import csv filename = "input.csv" acronyms = {} # 读取现有CSV内容到字典 with open(filename, 'r', newline='') as inp: reader = csv.reader(inp) acronyms = {rows[0]: rows[1] for rows in reader} # 获取用户输入的新缩写和定义 new_acronym = input("What is the acronym you would like to add? ") new_definition = input("What is the definition of this new acronym? ") # 更新字典 acronyms.update({new_acronym: new_definition}) # 将更新后的内容写回原文件 with open(filename, 'w', newline='') as f: w = csv.writer(f) w.writerows(acronyms.items())
额外说明
- 读取文件时加上
newline=''是好习惯,能避免读取时因换行符问题出现异常。 - 如果你的CSV文件有表头(比如第一行是"Acronym","Definition"),需要跳过表头行,否则表头会被当成普通记录存入字典,可在读取时添加一行代码:
with open(filename, 'r', newline='') as inp: reader = csv.reader(inp) next(reader) # 跳过表头行 acronyms = {rows[0]: rows[1] for rows in reader}
内容的提问来源于stack exchange,提问作者Higgo16
相关产品推荐
相关产品推荐

