首页 > 解决方案 > 使用 Python 在 CSV 文件中搜索特定列

问题描述

目前我的程序是在导入的 csv 文件中搜索特定文本值并将它们更改为所需值并输出 csv 文件的功能。我现在遇到的问题:有没有办法将搜索限制在特定的列中,例如,如果“hob”查找文本并且我们将其替换为“TEST”,则 hoboken 的城市字段将更改为 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()

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

示例输出:Kangaroo Kangaroo Eagle Eagle Spider Monkey Spider Monkey Testoken

标签: pythonexcelcsv

解决方案


您需要使用正则表达式。这\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.


推荐阅读