仅查找和替换完整单词?

时间:2021-07-01 08:27:15

标签: python regex replace

我对 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'。我已经尝试合并正则表达式,但我无法让它工作。

2 个答案:

答案 0 :(得分:3)

代替

line.replace(src, target)

试试

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

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

答案 1 :(得分:0)

只需使用正则表达式 (re) 并在表达式中添加 ^$ 模式。

line = re.sub('^'+src+'$', target, line)

不要忘记import re

相关问题