0

我比较新,我不知道从哪里开始。我不希望有详细的分步响应(当然,这些响应非常受欢迎),但是任何朝着正确方向的轻推将不胜感激。

我想使用 Gutenberg python 库根据用户的输入选择文本。

现在我有代码:

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

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

其中数字代表文本(在本例中为 11 = 爱丽丝梦游仙境)。

然后我有一堆关于如何处理文本的代码,但我认为这与这里无关。(如果是让我知道,我可以添加它)。

基本上,我想让用户这样做,而不仅仅是选择文本。我想询问用户他们选择的作者,如果古腾堡项目 (PG) 有该作者的作品,让他们从书名列表中选择(如果 PG 没有该作者的任何作品,则返回一些响应沿着“对不起,$author_name 没有任何东西,选择其他人。”然后一旦用户决定一本书,将与该书对应的数字输入到代码中。

我只是不知道在这个过程中从哪里开始。我知道如何处理用户输入,但我不知道如何获取该输入并使用它在线搜索某些内容。

理想情况下,我也能够处理诸如拼写错误之类的事情,但这可能会发生。

我非常感谢任何人有时间给予的任何帮助。谢谢!

4

1 回答 1

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 的调用都会非常快。如果您未能填充缓存,调用将引发异常。

考虑到这一点,我还没有尝试过我在这个答案中提供的代码,因为我仍在等待我的本地缓存填充。

于 2018-10-15T02:30:45.253 回答