【问题标题】:Text being written to single line when removing stopwords from columns从列中删除停用词时将文本写入单行
【发布时间】:2020-01-29 13:32:39
【问题描述】:

我正在尝试使用以下代码从制表符分隔的 .txt 文件中删除停用词:

import io
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize


file = open('textposts_01.txt', encoding='UTF-8')
stop_words = set(stopwords.words('english'))
line = file.read()
words = line.split()
for r in words:
    if not r in stop_words:
        appendFile = open('textposts_02.txt', mode='a', encoding='UTF-8')
        appendFile.write(" "+r)
        appendFile.close()

代码执行成功,但是当我查看结果时,所有行都被重新写入了一行。如何在删除停用词的同时维护列?

我在类似的帖子中找到了以下解决方案:

import io
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

file = open('textposts_01.txt', encoding='UTF-8')
stop_words = set(stopwords.words('english'))
line = file.read()
words = line.split()
for r in words:
    if not r in stop_words:
        appendFile = open('textposts_02.txt', mode='a', encoding='UTF-8')
        appendFile.write(" "+r)
        appendFile.write("\n")
        appendFile.close()

但是插入一个新行只是在每个单词之后创建一个新行,所以如果我从这样的一行开始:

0     make a list of every person you know

结果如下所示:

0
make
list
every
person
know

我需要这样的行中的结果:

0     make list every person

我已经搜索了一段时间,但没有找到任何解决方案。

【问题讨论】:

    标签: python nlp nltk stop-words


    【解决方案1】:
    appendFile.write(" "+r)
    

    将只写没有换行符的行。你可能想要

    appendFile.write(r + "\n")
    

    改为。

    【讨论】:

      【解决方案2】:

      完成每一行后,您可以遍历文件并添加换行符。

      此外,除其他外,一次读取所有文件并不是一种对内存非常友好的方法。以下是一种更好、更安全的方法:

      stop_words = set(stopwords.words('english'))
      with open('textposts_01.txt', encoding='UTF-8') as f:
          with open('textposts_02.txt', mode='a', encoding='UTF-8') as append_file:
              for line in f:
                  for r in line.split():
                      if r not in stop_words:
                          append_file.write(" "+r)
                  append_file.write("\n")
      

      【讨论】:

        猜你喜欢
        • 2018-09-28
        • 2017-06-21
        • 1970-01-01
        • 1970-01-01
        • 2016-01-19
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多