高级句子拆分
Python 问题!
我想要一些帮助,来把文本文件里的句子分开。我不想写一个很大的 if 循环,但我需要找到一种方法,把文本文件分成句子。我必须在不使用 .readlines() 的情况下做到这一点。
我想用句号、引号和感叹号来分句……但是:
- 如果句号后面跟着空格,然后是小写字母,就不应该分开这个句子。
- 如果句号后面跟着数字,并且中间没有空格,也不应该分开这个句子。
- 像 Mr.、Mrs.、Dr. 这样的缩写当然也不应该分开句子。
- 一些字母组合,比如 e.g、www.website.com 等等。
- 最后,如果句号后面跟着其他标点符号,比如逗号或者更多的句号(省略号),也不应该分开。
我想把这些分开的句子打印出来给用户。请问我该怎么做?我对基本的字符串格式和索引有一些了解,但加上省略号、姓氏等会让我觉得有点难……
**我还会使用 tkinter 来创建一个打开文件的按钮和一个下拉菜单,让用户可以从程序的输出中创建一个新的文本文件,每行一个句子,保存为 .txt 文件。
谢谢!
这是我目前的代码
import re
punctuation = ['.', '?', '!']
exceptions = ['Mr.', 'Mrs.', 'Ms.', 'Sr.', 'e.g', '...']
lines = []
with open('myData.txt') as myFile:
lines = re.split(punctuation, myFile)
1 个回答
0
这是我的代码
import re
punctuation = re.compile(r"([^\d+])(\.|!|\?|;|\n|。|!|?|;|…| |!|؟|؛)+")
lines = []
with open('myData.txt','r',encoding="utf-8") as myFile:
lines = punctuation.sub(r"\1\2<pad>", myFile.read())
lines = [line.strip() for line in lines.split("<pad>") if line.strip()]