我有两个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
副校长学术和学生事务
企业服务副总裁兼执行董事会成员
有人可以帮我纠正我的代码吗?
答案 0 :(得分:0)
您的字符串替换(row[0].replace
)未检查它是否与整个单词匹配。因此,它匹配'strat'并将'管理'变为'administrategyion',然后将其再次更改为'administrategyegyion'并进行下一次替换等。
您可以切换到re
模块以使用正则表达式替换字符串,也可以使用空格作为匹配的一部分(例如row[0].replace(' '+temp+' ',' '+temp1+' ')
) - 但要注意空格方法将会如果匹配位于字符串的开头或结尾,则会失败。