如何在python中识别和替换csv文件中的单词

时间:2017-01-13 00:35:15

标签: python string replace

我有两个CSV文件,一个包含带缩写的句子,另一个是缩写列表及其扩展名。我想识别第一个CSV文件中的每个缩写,并将其替换为其扩展。这就是CSV文件的外观:

第一个文件的样本:

v.p。学术

v.p。财务和行政

v.p。学术和学生事务

v.p。企业服务和外部关系。 ....

第二档的样本:

选'升。 :电气

VP。 :副总统

...

这是我的代码:

import csv
with open('firstFile.csv', 'rb') as sentence, open('secondFile.csv', 'rb')
as word,open('new.csv', 'wb') as out:   
reader = csv.reader(sentence)
reader2 = csv.reader(word)
abbr_list = list(reader2) 
filewriter = csv.writer(out, delimiter=' ') 

result = ''
for row in reader:
    for i in range (0,1453):
        temp = abbr_list[i][0]
        temp1 = abbr_list[i][1]
        if temp in row[0]:
            result = row[0].replace(temp,temp1)
            row[0] = result

    filewriter.writerow(row)
然而,我得到的结果并不是我所期待的:

结果文件:

副校长学术

副总裁financiale和administrategytegyyion

副校长学术和学生事务

企业服务副总裁兼执行董事会成员

有人可以帮我纠正我的代码吗?

1 个答案:

答案 0 :(得分:0)

您的字符串替换(row[0].replace)未检查它是否与整个单词匹配。因此,它匹配'strat'并将'管理'变为'administrategyion',然后将其再次更改为'administrategyegyion'并进行下一次替换等。

您可以切换到re模块以使用正则表达式替换字符串,也可以使用空格作为匹配的一部分(例如row[0].replace(' '+temp+' ',' '+temp1+' ')) - 但要注意空格方法将会如果匹配位于字符串的开头或结尾,则会失败。