【问题标题】:Advance Sentence Split提前句子拆分
【发布时间】:2014-04-17 15:12:00
【问题描述】:

Python 问题!

我想要一些关于在文本文件中拆分句子的帮助。我不想创建一个庞大的 if 循环,但我需要找到一种方法来将文本文件拆分为句子。我必须在没有 .readlines() 的情况下这样做

我想用句号、引号和感叹号来分隔句子...但是:

  1. 句点后跟空格后跟小写字母不会拆分句子
  2. 句号后跟一个没有中间空格的数字不会拆分句子
  3. Mr.、Mrs.、Dr.等当然不会拆分句子
  4. 字母序列,例如 www.website.com 等)
  5. 在句号的最后加上逗号和更多句号(省略号)等标点符号

我希望将文本文件中的这些拆分语句打印给用户。我将如何进行这个过程?我了解基本的字符串格式和索引,但是添加省略号、姓氏等会让我更难...

**还将使用 tkinter 创建一个打开文件按钮和一个下拉菜单,允许用户从 .txt 文件中每行一个句子的程序输出创建一个新的文本文件。

谢谢!

这是我得到的

import re

punctuation = ['.', '?', '!']
exceptions = ['Mr.', 'Mrs.', 'Ms.', 'Sr.', 'e.g', '...']
lines = []

with open('myData.txt') as myFile:
    lines = re.split(punctuation, myFile)

【问题讨论】:

  • 你能贴出你迄今为止为此编写的代码吗?
  • 到目前为止你尝试过什么?标记为“过于宽泛”,因为存在一系列问题,而 OP 本质上是要求为它们编写代码。
  • 可能需要检查 nltk 否则这将是一些丑陋的正则表达式。
  • 好吧,我现在可以告诉您,您不必担心创建“大量 if 循环”,因为 if 不是循环结构。
  • 您应该在句号后跟空格后跟大写字母拆分,规则 3 除外。

标签: python split sentence


【解决方案1】:

这是我的代码

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()]

【讨论】:

  • 嘿,我知道你是一个新的贡献者!请确保始终描述您对代码所做的操作。 StackOverflow 上排名最高的问题通常包含比实际代码更多的描述性文本。继续加油^^
猜你喜欢
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 2017-08-03
  • 2013-04-28
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多