Основы подключения Python к сети и проверки ввода пользователя

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

Я хочу использовать библиотеку Python Гутенберга для выбора текста на основе ввода пользователя.

Прямо сейчас у меня есть код:

from gutenberg.acquire import load_etext
from gutenberg.cleanup import strip_headers

text = strip_headers(load_etext(11)).strip()

где число представляет текст (в данном случае 11 = Алиса в стране чудес).

Затем у меня есть куча кода о том, что делать с текстом, но я не думаю, что это уместно здесь. (Если это, дайте мне знать, и я могу добавить это).

По сути, вместо того, чтобы просто выбирать текст, я хочу позволить пользователю делать это. Я хочу попросить пользователя выбрать автора, и если у Project Gutenberg (PG) есть работы этого автора, попросите их выбрать из списка названий книг (если у PG ничего нет у этого автора, верните какой-нибудь ответ) в духе "извините, ничего не пишите по $author_name, выберите кого-то еще". И затем, как только пользователь определился с книгой, введите в код номер, соответствующий этой книге.

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

В идеале, я мог бы справиться с такими вещами, как орфографические ошибки, но это может быть за чертой.

Я действительно ценю любую помощь, у кого есть время. Спасибо!

1 ответ

Решение

gutenberg Модуль включает в себя средства для поиска текста по метаданным, например по автору. Пример из документации:

from gutenberg.query import get_etexts
from gutenberg.query import get_metadata

print(get_metadata('title', 2701))  # prints frozenset([u'Moby Dick; Or, The Whale'])
print(get_metadata('author', 2701)) # prints frozenset([u'Melville, Hermann'])

print(get_etexts('title', 'Moby Dick; Or, The Whale'))  # prints frozenset([2701, ...])
print(get_etexts('author', 'Melville, Hermann'))        # prints frozenset([2701, ...])

Звучит так, как будто вы уже знаете, как прочитать значение от пользователя в переменную, и замена литерального автора в приведенном выше примере будет такой же простой, как если бы вы делали что-то вроде:

author_name = my_get_input_from_user_function()
texts = get_etexts('author', author_name)

Обратите внимание на следующее примечание из того же раздела:

Перед использованием одной из функций gutenberg.query необходимо заполнить локальный кеш метаданных. Этот одноразовый процесс займет довольно много времени (18 часов на моем компьютере), но после этого любые последующие вызовы get_etexts или get_metadata будут очень быстрыми. Если вам не удастся заполнить кэш, вызовы вызовут исключение.

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

Другие вопросы по тегам