Skip to main content
 首页 » 编程设计

python之读取文件时排除单词列表

2025年05月04日9myhome

我正在使用 Python 2.7.4

我拼凑了一个程序,它将读取一个 .txt 文件,分隔单词,删除空格和标点符号,将大写字母转换为小写字母,并返回 x 个最常见的单词,以及这些单词出现的次数单词出现在文档中。我正在尝试但未能做到的是从输出中排除某些最常见的词(即“a”、“i”、“to”、“for”等)。

我是初学者,所以我可能只是误解了对某些已经回答(但我无法利用)的问题的回答,例如:

How to remove list of words from a list of strings

和

Remove all occurrences of words in a string from a python list

我试图将不同的方面分成不同的功能以希望简化事情,尽管我怀疑我实际上可能使事情过于复杂。我的程序如下:

import string 
 
from collections import Counter 
 
def wordlist(line): 
    wordlist2 = [] 
    wordlist1 = line.split() 
    for word in wordlist1: 
        cleanword = "" 
        for char in word: 
            if char in string.punctuation: 
                char = "" 
            if char in string.whitespace: 
                char = "" 
            cleanword += char 
        wordlist2.append(cleanword) 
    return wordlist2 
 
def wordcaps(line): 
    line = [char.lower() for char in line] 
    return line 
 
def countwords(document):  
    words = Counter() 
    words.update(document) 
    x = words.most_common()  
    print x 
 
def readfile(filename): 
    fin = open(filename).read() 
    print countwords(wordcaps(wordlist(fin))) 

以下是我尝试过的一些事情。我试图创建一个列表 - 例如,filterlist = ['i', 'to', 'and'] - 并将其用作 wordlist 函数中的条件:

for word in wordlist1: 
    if word in filterlist: 
        word = "" 

这似乎没有任何效果。我也试过了,没用:

for word in wordlist1: 
    if word in filterlist: 
        wordlist1.append("") 

我已经尝试了很多其他的东西,但是无论如何这个问题似乎都太长了。我看到了对“正则表达式”的引用,但我不确定它是什么或它如何适合。

请您参考如下方法:

通常做就够了:

for word in wordlist1: 
   if word.lower() not in filterlist: 
        words.append(word) 

words 是包含有效单词的输出列表。

您的方法不起作用,因为您使用相同的列表来存储输入和输出列表 wordlist1:

for word in wordlist1: 
    if word in filterlist: 
        wordlist1.append("") 

你也可以这样做:

wordlist1 = [word for word in wordslist1 if word not in filterlist] 

它使用临时列表来存储有效单词,然后将它们分配回您的原始输入列表。