我正在尝试使用一个循环,为我添加到.txt文件中的句子添加句点 但是,每次运行循环时,我都会看到结果以每次添加句点的代码结束。
sentences = input_file.read()
matches = re.finditer("('The dog is happy",sentences,re.MULTILINE)
if matches:
for match in matches:
temp_match = match[1]
sentences = sentences.replace(temp_match, temp_match + '.')
output_file.write(sentences)
input_file.close()
output_file.close()
我得到的错误的一个例子是:
The dog is happy.
The dog is happy..
The dog is happy...
我该怎么做才能阻止这个循环?
答案 0 :(得分:0)
你的正则表达式并不关心你已经添加了一段时间。它在任何时期之前找到文本,然后用相同的东西替换它,加上一个句点,因此在每次迭代中累积句号
你如何读取文件的行,检查它们是否已经在一段时间内结束,如果没有,只需添加它?
with open("in.txt") as input_file, open("out.txt") as output_file:
for line in input_file:
if not line.rstrip().endswith("."):
output_file.write(line.rstrip() + r".\n")
else:
output_file.write(line)
如果你真的需要正则表达式,请在循环中检查它。无需finditer