python - 使用 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
解决方案
您需要使用正则表达式。这\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
.
推荐阅读
- python - 使用生成器表达式时如何从字典列表中获取项目的键
- php - gd-text PHP 库不将文本包装在框中
- android - 如何到达存储/模拟/0
- python - pandas 高效 groupby 将两个数据帧与 tqdm 一起应用
- javascript - JS原型:继承
- javascript - 将类型文件发送到 HTTPPostedFileBase 中的控制器
- excel - 如何验证 YYYYMMDD 字符串是 Excel VBA 中的日期?
- python - 在 Python 中比较两个足球队的名称
- php - PHP 计算另一个数组中存在的数组项的数量
- php - 前端ajax用户登录会话问题