Skip to main content
 首页 » 编程设计

python之如何替换整个 csv 文件中的特定单词

2025年05月04日12Terrylee

我有一个很大的 CSV 文件,里面有很多短词,我需要把它们变成一个完整的词。我在这里发现了一些帖子,例如 1 , 2但其中大部分要么更改整行,要么需要手动逐一进行。

我的 CSV 文件如下所示:

infoID               messages 
 111     we need to fix the car mag but we can't 
 113         we need a shf to perform eng change 
 115                      gr is needed to change 
 116                            bat needs change 
 117                    car towed for ext change  
 118                              car ml is high 
  . 
  . 

我的另一个文件包含所有缩写词的完整词,我想用它来应用到我的文档中,它的形式是:

shf:shaft 
gr:gear 
ml:mileage 

如果您能提供我也可以在我这边运行的代码,那就太好了。谢谢

请您参考如下方法:

将您的文本文件作为一个系列阅读

s 
 
0    mag:magnitude 
1        shf:shaft 
2          gr:gear 
3      bat:battery 
4      ext:exhaust 
5       ml:mileage 
Name: 0, dtype: object 

拆分冒号并将系列转换为字典映射键到它的替换:

dict(s.str.split(':').tolist()) 
 
# {'bat': 'battery', 
#  'ext': 'exhaust', 
#  'gr': 'gear', 
#  'mag': 'magnitude', 
#  'ml': 'mileage', 
#  'shf': 'shaft'} 

使用它来执行 replace使用 regex=True 操作:

df['messages'].replace(dict(s.str.split(':').tolist()), regex=True) 
 
0    we need to fix the car magnitude but we can't 
1            we need a shaft to perform eng change 
2                         gear is needed to change 
3                             battery needs change 
4                     car towed for exhaust change 
5                              car mileage is high 
Name: messages, dtype: object 

请注意,如果这些是严格的全字替换,您可以通过将关键字符串转换为使用字边界的正则表达式来扩展此解决方案。为了好的措施,也转义字符串:

import re 
 
mapping = {fr'\b{re.escape(k)}\b': v for k, v in s.str.split(':').tolist()} 
df['messages'].replace(mapping, regex=True) 
 
0    we need to fix the car magnitude but we can't 
1            we need a shaft to perform eng change 
2                         gear is needed to change 
3                             battery needs change 
4                     car towed for exhaust change 
5                              car mileage is high 
Name: messages, dtype: object