我正在尝试找到一种方法,以编程方式搜索csv文件中特定列中的值,并在满足条件时替换值。
基本上,我将处理许多大型文件,其中State值的数据不一致(有些使用NY,有些使用New York)。我需要尝试用所有州的ISO标准(例如NY)替换大部分(如果不是全部)。
我将如何改变这一点:
data1,data2,New York,data4
data1,data2,NY,data4
data1,data2,Ohio,data4
对此:
data1,data2,NY,data4
data1,data2,NY,data4
data1,data2,OH,data4
全部不创建新文件。
答案 0 :(得分:1)
您可以执行以下操作来转换第3列条目:
import csv
short = {'New York':'NY', 'NY':'NY', 'Ohio':'OH'}
entries = []
with open('data.txt', 'rb') as f_input:
for cols in csv.reader(f_input):
cols[2] = short[cols[2]]
entries.append(cols)
with open('data.txt', 'wb') as f_output:
csv.writer(f_output).writerows(entries)
这会导致data.txt
看起来像:
data1,data2,NY,data4
data1,data2,NY,data4
data1,data2,OH,data4
这假设您的文件足够小以适应内存。