当前位置: 首页 > 知识库问答 >
问题:

从一组文件中删除停止字

从经略
2023-03-14
import pathlib

stop_words = open("StopWordList.txt")
stop_words.read()

for path in pathlib.Path(r'C:\Users\Usuario\Desktop\HelloWorld\emails').iterdir():
    if path.is_file():
        current_file = open(path, "r")
        lines = current_file.read()
        words = lines.split()

        for y in stop_words:
            if not y in stop_words:

                appendFile = open('filteredtext.txt', 'a')
                appendFile.write(" "+y)
                appendFile.close()

共有1个答案

东门修能
2023-03-14

我没有测试它(我没有带有停止词的文件),但我会这样做

import pathlib
import sys


if len(sys.argv) > 1:
    folder = sys.argv[1] # get folder as parameter
else:
    folder = r'C:\Users\Usuario\Desktop\HelloWorld\emails'


stop_words = open("StopWordList.txt").read().lower()  # to compare lowercase stopwords with lowercase words

for path in pathlib.Path(folder).iterdir():
    if path.is_file():

        # --- read all text at once ---

        input_file = open(path) #  it use `r` as default
        text = input_file.read()
        input_file.close()

        original_words = text.split()  # text -> words

        # --- remove stopwords ---

        filtered_words = []

        for word in original_words:
            temp_word = word.lower().rstrip('.,!?')
            if temp_word not in stop_words:   # check lowercase without `.,!?`
                filtered_words.appeend(word)  # keep original word

        # --- save all text at once ---

        output_path = path + '-filtered'  # create new filename

        text = " ".join(filtered_words)  # words -> text

        output_file = open('output_path', 'w')
        output_file.write(text)
        output_file.close()

它不会删除.,!?并且不会转换为小写。

最终您可以将代码拆分为函数

import pathlib
import sys

# --- functions ---

def read_words(path):

    input_file = open(path) #  it use `r` as default
    text = input_file.read()
    input_file.close()

    words = text.split()  # text -> words

    return words

def filter_words(words, stopwords):

    filtered_words = []

    for word in all_words:
        temp_word = word.lower().rstrip('.,!?')
        if temp_word not in stop_words:
            filtered_words.appeend(word)

    return filtered_words

def write_words(path, words):

    text = " ".join(words)  # words -> text

    output_file = open(path, 'w')
    output_file.write(text)
    output_file.close()

# --- main ---

if len(sys.argv) > 1:
    folder = sys.argv[1] # get folder as parameter
else:
    folder = r'C:\Users\Usuario\Desktop\HelloWorld\emails'

stop_words = open("StopWordList.txt").read().lower()  # to compare lowercase stopwords with lowercase words

for path in pathlib.Path(folder).iterdir():
    if path.is_file():
        words = read_words(path)
        words = fiter_words(words, stopwords)
        write_words(path + '-fitered', words)
 类似资料:
  • 问题内容: 我有一个大文件,只需要删除几行,是否有任何方法可以打开新文件并复制整个文本? 编辑:主要问题是,当它在多个txt filse中运行时,该程序失败 问题答案: 有什么方法可以做到而无需打开新文件并复制整个文本? 不,没有。当然,如果您想 安全地 做的话就没有。 而且也不会真正帮助您。它可以让您用相等数量的字节替换文件中的字节序列,但这并不意味着删除一行。 您可以这样使用RAF: 给定初始

  • 问题内容: 我正在尝试删除包含特定字符串的特定行。 我有一个名为 numbers.txt 的文件,其内容如下: Peter· Tom TOM1 Inflammation 我要删除的是文件中的那个 tom ,所以我做了以下功能: 输出为: 彼得· 颜 如您所见,问题在于该函数删除了 tom 和 tom1 ,但是我不想删除 tom1 。我只想删除 tom 。这是我想要的输出: 彼得 TOM1 燕 有什

  • 我正在使用gradle构建一个Spring Boot应用程序,我希望从war中删除文件,因为该文件将从外部加载(它运行在tomcat容器中,而不是嵌入式的)。 我查看了StackOverflow和Gradle文档,试图找出该做什么,但我不知道该绑定到哪个阶段,以及在创建war之前还是之后排除该文件。处理文件似乎也有多种方法。 我相信Maven使用作为等价物。

  • 问题内容: 我有以下要在node.js中操作的文本文件(“ test.txt”): 我想删除第一行,以使其成为第一行。我怎样才能做到这一点? 问题答案:

  • 问题内容: 我有一个像这样的textfile.txt: 如何删除最舒适的前三行和最后一行? 问题答案: