You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在文本文件中精确匹配并纠正单词,避免部分匹配误替换

问题描述

我有一个test.txt文件,里面包含两个拼写错误的单词:loyai、royai,还有正确的单词pain。我想用字典words_查找并替换这些拼写错误的单词,但当前代码会把包含pai的pain错误替换成paln。我需要实现仅精确匹配整个错误单词时才进行替换,请问该怎么修改代码?

原代码

#!/usr/bin/env python3   
import re

words_ = {"loyai":"loyal", "royai":"royal", "pai":"pal"}
 
class srt_clean(object):
    def __init__(self, file_name):
        self.file_name = file_name

    def replace_words_(self, file_name):

        with open(file_name, 'r') as file: 
            data = file.read()

            for search_text, replace_text in words_.items():
                data = re.sub(search_text, replace_text, data)

        # 以写入模式打开文件,写入替换后的内容
        with open(file_name, 'w') as file: 
            file.write(data) 
        

file_name = "test.srt"
clean = srt_clean(file_name)
clean.replace_words_(file_name)

修改方案及代码

核心是利用正则表达式的单词边界\b,它会匹配单词字符(字母、数字、下划线)与非单词字符的分界处,或是字符串首尾与单词字符的分界处,以此确保只替换独立的目标单词。同时用re.escape()转义搜索文本中的特殊字符,避免正则语法解析错误。

修改后的代码:

#!/usr/bin/env python3   
import re

words_ = {"loyai":"loyal", "royai":"royal", "pai":"pal"}
 
class srt_clean(object):
    def __init__(self, file_name):
        self.file_name = file_name

    def replace_words_(self, file_name):

        with open(file_name, 'r') as file: 
            data = file.read()

            for search_text, replace_text in words_.items():
                # 用单词边界包裹搜索文本,确保精确匹配整个单词
                pattern = rf'\b{re.escape(search_text)}\b'
                data = re.sub(pattern, replace_text, data)

        with open(file_name, 'w') as file: 
            file.write(data) 
        

file_name = "test.srt"
clean = srt_clean(file_name)
clean.replace_words_(file_name)

内容的提问来源于stack exchange,提问作者bob_the_bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:04:55