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

时间:2018-11-12 23:37:05

标签: python file-io

我是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)

3 个答案:

答案 0 :(得分:1)

由于未声明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)

答案 1 :(得分:0)

如果行中没有该行,请更改为该行;如果列表中还没有该行,则要添加该单词;如果该行已经存在,则将其忽略

答案 2 :(得分:0)

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

  • 在这种情况下,使用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)}")

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

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