我的代码有效,但问题是在错误的位置替换了
有人可以看一下并改进我的代码。
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()
答案 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))