繁体   English   中英

计算文本文件中的唯一单词 (Python)

[英]Count unique words in a text file (Python)

我是 Python 的新手,所以我正在做一些挑战,其中之一是查找文本文件中唯一单词的数量。 文本文件中有 212 个唯一单词,但我的代码只显示 0。谢谢你的帮助。

words=[]
count=0
with open ("text.txt","r") as file:
  for line in file:
    if line in words:
        words.append(line)
        k+=1
    else:
        pass
print(k)

由于未声明k ,因此代码段中似​​乎存在错误。 我假设您正在尝试count唯一单词的数量。

另外,还有更好的方法可以通过将列表转换为集合来在列表中查找唯一值。 集合中的值将不包含重复的值。

查看下面的代码段。

words = []
count = 0

with open ("text.txt","r") as f:
    # Get a list of lines in the file and covert it into a set
    words = set(f.readlines()) 
    count = len(words) 

print(count)

更改为if line not in file,如果尚未将其添加到列表中,则要添加该单词;如果该单词已经存在,则将其忽略

您的示例代码片段中有很多错误:

  • 在这种情况下,使用dictsetlist
  • 您无需在每一行上拆分单词(如果每行不止一个单词)
  • 您的else条件是不必要的

这是解决这些问题并使用一些简洁语言功能的简单实现:

with open("test.txt", "r") as file:
    lines = file.read().splitlines()

    uniques = set()
    for line in lines:
        uniques |= set(line.split())

    print(f"Unique words: {len(uniques)}")

此示例使用集合和f字符串,后者仅在Python 3.6+中可用。 但是请注意,我们正在将整个文件内容“混入”一个变量,如果文件很大,这可能会很糟糕。 我假设您的示例文件很小。

另外,此示例不处理标点符号之类的情况。 因此,“测试”将被算作与“测试”不同的词。 (带句号)。 修复留给读者的练习。

count = 0
file = open("names.txt", "r")
read_data = file.read()
words = set(read_data.split())
for word in words:
    count += 1
print('Total Unique Words:', count)

将 names.txt 替换为您的文件名

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM