Основы подключения 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 будут очень быстрыми. Если вам не удастся заполнить кэш, вызовы вызовут исключение.
Имея это в виду, я не пробовал код, который я представил в этом ответе, потому что я все еще жду заполнения своего локального кэша.