我有一个程序,使用以下规则将文本拆分为句子:
句子边界出现在“。”,“?”和“!”不同的是:
A)句号后跟数字,没有插入空格。 B)句点之后是空格,后跟小写字母。 C)没有跟随空格的周期。 D)标题之前的时期。
我的书面代码如下:
file_name = raw_input("Enter the name of the text file: ")
txt_file = open('%s.txt' % file_name, 'r+')
text = txt_file.readline()
print; print "Original text is: "; print
print text
new_wrd = []
new_line = []
new_txt = []
while len(text.strip()) != 0:
for index, char in enumerate(text):
print char
if char == "." or char == "?" or char == "!":
if text[index+1] == " ":
if ("".join(new_wrd) == "Mrs" or "".join(new_wrd) == "Mr" or "".join(new_wrd) == "Ms"
or "".join(new_wrd) == "Dr" or "".join(new_wrd) == "Jr"):
new_wrd.append(char)
else:
if text[index+2].isupper():
new_line.append("".join(new_wrd))
new_line.append(char)
new_txt.append("".join(new_line))
new_line = []
new_wrd = []
else:
new_line.append("".join(new_wrd))
new_line.append(char + " ")
new_wrd = []
else:
new_wrd.append(char)
elif char == " ":
if ("".join(new_wrd) == "Mrs." or "".join(new_wrd) == "Mr." or "".join(new_wrd) == "Ms."
or "".join(new_wrd) == "Dr." or "".join(new_wrd) == "Jr.") or new_wrd != []:
new_line.append("".join(new_wrd))
new_line.append(" ")
new_wrd = []
else:
new_wrd.append(char)
text = txt_file.readline()
for txt in new_txt:
print txt
txt_file.write(txt)
对于给定的例子:
先生。 XYZ是一个好孩子。他刚从ABC,Lmnop那里获得了他的B.Tech学位......至少,他已经通过了学位。
输出应显示:
先生。 XYZ是一个好孩子。
他刚从ABC,Lmnop那里获得了他的B.Tech学位......
至少,他已通过学位。
但相反,它显示:
先生。 XYZ是一个好孩子。 他刚从ABC,Lmnop那里获得了他的B.Tech学位......
可以对正确的输出做出哪些更正?
此外,代码:
txt_file.write(txt)
不工作。为什么呢?