python - 比较列表和文本文件

标签 python list file loops nltk

我有以下列表:t = ['one', 'two', 'three']

我想读取一个文件并为列表中存在的每个单词添加一个点。例如。如果 "one""two" 存在于 "CV.txt"中,points = 2。如果它们都存在,则 points = 3.

import nltk
from nltk import word_tokenize

t = ['one', 'two', 'three']
CV = open("cv.txt","r").read().lower()

points = 0

for words in t:
    if words in CV:
        #print(words)
        words = nltk.word_tokenize(words)
        print(words)
        li = len(words)
        print(li)
        points = li
        print(points)

假设 'CV.txt' 包含单词“one”和“two”,并且按单词拆分(标记化) ,应将 2 个点添加到变量“points

但是,此代码返回:

['one']
1
1
['two']
1
1

正如您所看到的,长度只有 1,但它应该是 2。我确信有一种更有效的方法可以使用迭代循环或其他方法而不是 len。 如有任何帮助,我们将不胜感激。

最佳答案

我认为您不需要在循环内进行标记化,因此可能更简单的方法如下:

  • 首先对txt文件中的词进行分词
  • 检查每个常用词 在 t

最后的点是 common_words 中的单词数。

import nltk
from nltk import word_tokenize

t = ['one', 'two', 'three']
CV = open("untitled.txt","r").read().lower()

points = 0

words = nltk.word_tokenize(CV)
common_words = [word for word in words if word in t]
points = len(common_words)

注意:如果你想避免重复,那么你需要一组常用词,如下面的代码:

common_words = set(如果单词在 t 中,则单词中的单词)

关于python - 比较列表和文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49260329/

相关文章:

java - 读取文件并打印字符串和整数的平均值

Python解析一个巨大的文件

python - 如何使用 pyPDF2 从 PDF 格式的多页简历中提取文本数据?

python - Jupyter Notebook 中的 Selenium ,不同细胞的不同结果

r - write.xlsx (openxlsx) 的编码问题

c++ - 为什么我不能推回列表 C++

java - 使用 Streams 通过特定属性获取两个列表之间的共同元素和差异

C - c 函数 open() 位于哪个库(.so 文件)中,我如何找到任意函数的库?

python - Python 中的 sqlite3 详细日志记录

C++ 数据存储替代 Python pickle