Слово-поиск сроки код в Python


Я использую линейный поиск как проверка орфографии. Мне нужно время мой код, чтобы получить средние, как я с помощью различных поисковых запросов и их сравнение. Однако я не верю, что код, который я использовал, чтобы код является достаточно точным, или лучший способ. Если у кого есть какие-либо предложения, что было бы здорово.

import re
import time

start_time = time.time()
f1=open('writefile.txt', 'w+')

def linS(target, words):
    '''linear search for target in words. words need not be sorted'''
    for s in words:
        if s==target:
            return True
    return False

words = [s.strip("\n").lower() for s in open("dict.txt")] 
words.sort() # sort the list

with open("text.txt" , encoding="utf8") as text:
    content = text.read().split(" ")
    content = [item.lower() for item in content]
    content = ' '.join(content)
    content = re.findall("[a-z]+", content)

for w in content:
    if not linS(w, words):
        f1.write(w+'\n')

f1.close()

print("--- %s seconds ---" % (time.time() - start_time))


111
3
задан 10 апреля 2018 в 09:04 Источник Поделиться
Комментарии
1 ответ

Некоторые предложения:


  • Передать код через pycodestyle чтобы сделать его более идиоматические.

  • Использовать with open() (или try/finally для более сложное решение), чтобы убедиться, что файлы будут закрыты, когда они закончили.

  • Вы можете сделать .readlines() на файл указатель, чтобы избежать stripпинг строк.

  • Словарь является, вероятно, контролируется вами. Вроде и в нижнем регистре это один раз, и тогда вам не придется делать это каждый раз, когда скрипт выполняется.

  • Эти логически эквивалентны:

        for x in y:
    if x == target:
    return True
    return False

    и

        return target in y

  • Используйте описательные имена, такие как for word in words и деф linear_search.

  • Поместите код времени по линии вы пытаетесь время. Если вы хотите знать суммарное время linS тогда вам время начала и окончания непосредственно перед и сразу после последней петли (которая будет рассчитывать время, необходимое для записи на диск буферы) или накопить определенную сумму время работы в `Линс`.

2
ответ дан 10 апреля 2018 в 10:04 Источник Поделиться