Подсчет уникальных слов в текстовом файле (Python) - PullRequest
0 голосов
/ 13 ноября 2018

Я новичок в 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 голосов
/ 13 ноября 2018

Кажется, что во фрагменте кода есть ошибка, так как 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)
0 голосов
/ 13 ноября 2018

В вашем примере фрагмента что-то не так:

  • В этом случае целесообразнее использовать dict или set, чем list
  • Вы не разделяете слова в каждой строке (если в строке более одного слова)
  • Ваше 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+. Обратите внимание, однако, что мы «крадем» все содержимое файла в переменную, что может быть плохо, если файл очень большой. Я предполагаю, что ваш пример файла небольшой.

Кроме того, этот пример не обрабатывает такие случаи, как пунктуация и тому подобное. Таким образом, слово «тест» будет считаться словом, отличным от слова «тест». (с точкой). Исправление оставлено читателю в качестве упражнения.

0 голосов
/ 13 ноября 2018

Измените на, если строка отсутствует в файле, вы хотите добавить слово, если его еще нет в вашем списке, и игнорировать его, если оно уже есть

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...