Какой простой способ поиска слова в Python в очень длинном текстовом файле?

1

Я хочу создать очень простой инструмент проверки орфографии, используя текстовый файл с алфавитным списком из примерно 80000 общих слов.

Какой простой, но эффективный способ поиска файла и выяснить, содержит ли он слово с помощью python?

Должен ли я разбирать файл списка слов в наборе, списке, словаре, tuple?

Есть ли простой способ воспользоваться тем, что мой список слов уже в алфавитном порядке?

Я бы предпочел сохранить его относительно простым. Я не хочу исправлять рекомендации по написанию или другие причудливые функции. Я просто хочу знать, не написано ли слово.

  • 0
    Зависит от того, сколько слов вы ищете.
Теги:
performance
list
search
spell-checking

2 ответа

5
Лучший ответ

Так как 80000 слов легко вписываются в память, вам лучше всего использовать set:

words = set(line.strip() for line in open("words"))

Это не будет использовать тот факт, что ваш файл уже отсортирован, но это самый эффективный способ. Чтобы найти слово w, вы можете использовать

w in words

который амортизируется O (1).

  • 0
    Используйте with open("words") as f: полагаясь на пересчет для закрытия файлов, это последний 2.4;)
  • 1
    ... в среднем случае. В худшем случае это O (n). @delnan, если вам нужен файл только один раз, его метод чист.
Показать ещё 3 комментария
1

Положите ваши слова dict в набор, который имеет постоянное время поиска.

myDict = set([<actual list of words here>])
for word in file:
    if word not in myDict:
        handleBadWord(word)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню