如何用字典对应键值替换CSV指定列的值?(Python)
替换CSV指定列内容的Python实现
需要注意CSV的列索引从0开始计数,你要处理的第7列对应的索引是6。我们可以通过字典匹配替换该列内容,同时将英文州缩写转换为对应的中文州名。
完善后的代码
import csv # 必须导入csv模块,原代码遗漏此步骤 # 对应中文翻译的状态字典 state = {'WA': '西澳大利亚州', 'NM': '新墨西哥州', 'GA': '佐治亚州', 'SC': '南卡罗来纳州', 'FL': '佛罗里达州'} fr = open('CarRentalData.csv', 'r') reader = csv.reader(fr) header = next(reader) # 添加newline=''避免Windows系统下写入CSV出现多余空行 fw = open('CarRentalData_clean.csv', 'w', newline='') writer = csv.writer(fw) writer.writerow(header) clean_data = [] for row in reader: # 替换第7列(索引6):匹配到字典键则用中文替换,无匹配则保留原值 row[6] = state.get(row[6], row[6]) clean_data.append(row) writer.writerow(row) # 必须调用close()方法关闭文件,原代码遗漏括号属于语法错误 fr.close() fw.close()
关键细节说明
- 导入
csv模块:这是使用CSV读写功能的前提,原代码未添加会直接报错。 - 索引对应:CSV行数据为列表结构,第7列对应索引
6,这是新手易踩的坑。 get()方法的作用:state.get(row[6], row[6])确保当列值不在字典键中时,保留原内容,不会触发异常。newline=''参数:写入CSV时添加该参数,可避免Windows系统下生成的文件出现多余空行。
更简洁高效的写法(自动管理文件)
使用with语句可以自动处理文件的打开与关闭,无需手动调用close(),避免资源泄漏:
import csv state = {'WA': '西澳大利亚州', 'NM': '新墨西哥州', 'GA': '佐治亚州', 'SC': '南卡罗来纳州', 'FL': '佛罗里达州'} # with块结束后自动关闭文件 with open('CarRentalData.csv', 'r') as fr, open('CarRentalData_clean.csv', 'w', newline='') as fw: reader = csv.reader(fr) writer = csv.writer(fw) # 写入表头 writer.writerow(next(reader)) clean_data = [] for row in reader: row[6] = state.get(row[6], row[6]) clean_data.append(row) writer.writerow(row)
内容的提问来源于stack exchange,提问作者Dummy_code
相关产品推荐
相关产品推荐

