首页 > 解决方案 > 仅查找和替换完整的单词?

问题描述

我对 Python 完全陌生,我目前正在尝试编写一个小脚本来查找和替换文件夹中所有相同类型文件中的不同输入。它目前看起来像这样并且到目前为止有效:

import glob
import os

z = input('filetype? (i.e. *.txt): ')
x = input('search for?: ')
y = input('replace with?: ')

replacements = {x:y}
lines = []

for filename in glob.glob(z):
    with open(filename, 'r') as infile:
         for line in infile:
            for src, target in replacements.items():
                line = line.replace(src, target)
            lines.append(line)

    with open(filename, 'w') as outfile:
        for line in lines:
            outfile.write(line)
            lines = []

我的问题是我只想替换完整的单词,所以当尝试用“x”替换“0”时,“4025”不应该变成“4x25”。我试图合并正则表达式,但我无法使其工作。

标签: pythonregexreplace

解决方案


代替

line.replace(src, target)

尝试

re.sub(r'\b' + re.escape(src) + r'\b', target, line)

导入后re\b匹配单词边界


推荐阅读