使用Python搜索CSV文件中的特定列

时间:2018-07-05 15:50:34

标签: python excel csv

当前,我的程序具有在导入的csv文件中搜索特定文本值并将其更改为所需值的功能,并输出一个csv文件。我现在遇到的问题是:有没有一种方法可以将搜索限制到特定的列,例如,如果“ hob”查找的文本并且我们将其替换为“ TEST”,则hoboken的city字段将更改为Testobken。我对python来说还很陌生,所以如果这很容易解决,我深表歉意。这是我当前的代码。

import csv
ifile = open('testbook.csv', 'rb')
reader = csv.reader(ifile,delimiter='\t')
ofile = open('output.csv', 'wb')
writer = csv.writer(ofile, delimiter='\t')

findlist = ['Australia', 'Mexico', 'United States', 'hob']
replacelist = ['Kangaroo', 'Spider Monkey', 'Eagle', 'Test']

rep = dict(zip(findlist, replacelist))

def findReplace(find, replace):
    s = ifile.read()
    for item, replacement in zip(findlist, replacelist):
        s = s.replace(item, replacement)
   ofile.write(s)

for item in findlist:
    findReplace(item, rep[item])

ifile.close()
ofile.close()

示例输入: 澳大利亚澳大利亚美国美国 墨西哥墨西哥霍博肯

示例输出: 袋鼠袋鼠鹰鹰 蜘蛛猴蜘蛛猴Testoken

1 个答案:

答案 0 :(得分:0)

您需要使用正则表达式。 \b表示您将只替换完整的单词。像这样:

import re

def findReplace(s, find, replace):
    s = re.sub(r"\b%s\b" % find , replace, s)
    return s


s = "rest and don't get arrested"
s = findReplace(s, "rest", "run")
print(s)

这将打印run and don't get arrested