【发布时间】:2016-07-18 21:15:05
【问题描述】:
我已经用 Python 编写了两个函数。 当我运行 replace() 时,它会查看名为 replaces 的数据结构。它获取键,遍历文档,当它与文档中的一个词匹配一个键时,它用值替换这个词。
现在看来正在发生什么,因为我也有相反的情况(“停止”更改为“暂停”,“暂停”更改为“停止”,具体取决于文本文件中的内容),似乎它遍历文件,更改了一些单词,然后又改回来(即没有进行任何更改)
当我运行 replace2() 时,我从文本文档中取出每个单词,看看这是否是替换的关键。如果是,我更换它。不过,我注意到的是,当我运行它时,暂停(包含子字符串“结束”)以“暂停”结束?
有没有更简单的方法来遍历文本文件并且只更改一次单词(如果找到的话)?我认为 replace2() 做了我想做的事,虽然我丢失了短语,但它似乎也拾取了子字符串,它不应该这样做,因为我确实使用了 split() 函数。
def replace():
fileinput = open('tennis.txt').read()
out = open('tennis.txt', 'w')
for i in replacements.keys():
fileinput = fileinput.replace(i, replacements[i])
print(i, " : ", replacements[i])
out.write(fileinput)
out.close
def replace2():
fileinput = open('tennis.txt').read()
out = open('tennis.txt', 'w')
#for line in fileinput:
for word in fileinput.split():
for i in replacements.keys():
print(i)
if word == i:
fileinput = fileinput.replace(word, replacements[i])
out.write(fileinput)
out.close
replacements = {
'suspended' : 'stopped',
'stopped' : 'suspended',
'due to' : 'because of',
'ended' : 'finished',
'finished' : 'ended',
'40' : 'forty',
'forty' : '40',
'because of' : 'due to' }
比赛开始后仅 40 分钟就因下雨而结束。它是 因下雨暂停。
【问题讨论】:
标签: python string replace substring