我在替换文本文件中的单词时遇到麻烦

时间:2019-10-28 08:06:01

标签: python

我的代码有效,但问题是在错误的位置替换了

有人可以看一下并改进我的代码。

def find():

    openfile = open(filename, "rt")

    closefile = open(filename, "wt")


    inp1 = input(search)
    inp2 = input(replace)
    for line in fileopen:
        newword = fileout.write(line.replace(inp1, inp2))

    openfile.close()
    closefile.close()
    return newword

find()

2 个答案:

答案 0 :(得分:0)

正如@ splash58所说,简单的方法是在单词周围添加空格:

newword = line.replace(' ' + searchinput + ' ',' ' + replaceword + ' ')

更好的方法是使用正则表达式,即在搜索时添加单词边界(\b

import re
newword = re.sub(r'\b{}\b'.format(searchinput),replaceword,line)

答案 1 :(得分:0)

您可以为此使用regex!正则表达式使您可以搜索单词边界以及特定的子字符串。您可以为此使用\b标识符。通过这种方式,您可以确定只选择完整的单词,而不是其他单词的一部分。

import re

filterword = input('The word to replace:')
regex = "\\b" +filterword+"\\b"
replacement = input("The word to replace with:")
myString = "I tried to explain in the train."

print(f"Replacing in:\n {myString}")
print(re.sub(regex, replacement, myString))