【问题标题】:Copy complete sentences from text file and add to list从文本文件中复制完整的句子并添加到列表中
【发布时间】:2016-06-12 14:27:25
【问题描述】:

我正在尝试从一个长文本文件中提取完整的句子,并将它们作为字符串添加到 Python 2.7 中的列表中。我想自动执行此操作,而不仅仅是在列表中剪切和粘贴。

这是我所拥有的:

from sys import argv

script, filename = argv # script = alien.py; filename = roswell.txt

listed = []

text = open(filename, 'rw')

for i in text:
    lines = readline(i)
    listed.append(lines)

print listed
text.close()

没有加载到列表中。

【问题讨论】:

  • for i in text 已经读取了文件中的每一行,readline(i) 是什么(以及它来自哪里)?如果你只想要所有的行,为什么不listed = text.readlines()?另外,你应该使用 "context manager" with open(...) as text:.
  • 定义完整的句子。另外,向我们展示readline 的功能。它不是标准库的一部分。但是,有一种方法 readline 可以在类文件对象上调用。提供您的文本文件(或其中的一部分)的内容以及您想要获取的列表
  • 那么您的文件中的行是否已经完成了句子,您只想逐行阅读文件,还是还有更多内容? (比如检测句子何时结束……)
  • 您应该至少显示一些输入文件。正如@jonrsharpe 指出的那样, i 是行,而行 - readline(i) 没有意义。你也用'rw'打开你的文件,这是错误的。模式是“r”、“w”、“a”和其他一些,但不是“rw”。而且您没有写入文件
  • 谢谢。该文件是 .pdf 格式的一本书的八章。

标签: python string list text


【解决方案1】:

你可以用一个while循环来做到这一点:

listed = []
with open(filename,"r") as text:
    Line = text.readline()


    while Line!='':
        listed.append(Line)
        Line = text.readline()

print listed

在前面的示例中,我假设每个句子都写在不同的行上,如果不是这样,请改用以下代码:

listed = []


with open(filename,"r") as text:
    Line = text.readline()


    while Line!='':
        Line1 = Line.split(".")
        for Sentence in Line1:
            listed.append(Sentence)
        Line = text.readline()

print listed

另外,请尝试使用with open(...) as text: 而不是text = open(...)

【讨论】:

  • 用“.”分隔的单词不需要组成一个句子,例如 10 A.M
  • @lulyon 你是对的。我不知道文本文件里面有什么。我们也许可以添加一个空格,所以我们会有 .split(". ")
  • 我刚刚查过了,这就是你的答案! :)
  • @lulyon 我无法对您的回答发表评论,但我们应该始终关闭打开的文件(因此我建议使用 with open() as )
  • @Elie khalifeh 谢谢你的教程。真的很有帮助。干杯!
【解决方案2】:

通常句子由'. ' 分隔,而不是'\n'。在这种情况下,使用带有period+space的split(不带return-enter):

listed = []

fd = open(filename,"r") 
try:
    data = fd.read()
    sentences = data.split(". ")
    for sentence in sentences:
        listed.append(sentence)

    print listed
finally:
    fd.close()

【讨论】:

  • 谢谢!这对我有用。很好也很简短。干杯!
猜你喜欢
  • 1970-01-01
  • 2014-03-06
  • 2015-01-28
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多