首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从文本文件中提取多个圣经经文?

如何从文本文件中提取多个圣经经文?
EN

Stack Overflow用户
提问于 2019-09-26 19:33:10
回答 1查看 110关注 0票数 0

我试图写一些东西,将引用(从一个文本文件)的诗句,应用户的要求。我有一些东西可以成功地做到这一点,但只适用于奇异的诗句。

代码语言:javascript
运行
复制
userinput = input("Enter Book, Chapter, Verse:")
file = open("CNT.txt")
lines = file.readlines()
for line in lines:
    if userinput in line:
        print(line)
        break

file.close()

文本文件中的文本如下所示:

启6:1我看见羔羊打开七只海豹中的一只,听见四只活物中有一只像雷声说:“来吧!”

启6:2我看见了,看哪!有一匹白马,骑在上面,有弓,有冠冕给他,他就出去征服,好叫他得胜。

启6:3他打开第二印的时候,我听见第二个活物说:“来吧!”

我对这件事很陌生,我相信这说明了。当用户输入诸如"Rev 6:1-3“或"Rev 6:1,3”之类的内容时,是否有任何方式添加或更改此代码以允许它获取多个诗句?还是应该完全抛弃它,转而选择更有效、更复杂的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-26 21:14:32

下面是根据您的代码和上面的注释为您提供的答案。

代码语言:javascript
运行
复制
userinput = input("Enter Book, Chapter, Verse:")
d = userinput.find("-")

if d == -1:
    verses = [userinput]
else:
    book_chapter = userinput[:userinput.find(":")]
    first_verse = userinput[userinput.find(":") + 1:d]
    last_verse = userinput[d + 1:]
    verses = [book_chapter + ":" + str(x) for x in range(int(first_verse),int(last_verse)+1)]

file = open("CNT.txt")
lines = file.readlines()
for line in lines:
    if any([x in line for x in verses]):
        print(line)

file.close()

这没有任何错误处理或对格式的细微变化的任何容忍,但希望它能给您提供想法,并帮助您学习语言。我使用过的一些东西的名称,您可能会读到:

例如,userinput[:3]

  • String方法(如userinput.find(":")

  • List理解[x in line for x in verses]

  • if/else )阻塞

另一件要注意的是,这是相当低效的。我怀疑整本圣经都会很慢。这是因为你正在搜索整个文本的每一节参考。你没有利用这样一个事实:你知道它们发生在行的开头或顺序上。这就是生成Python的dict或SQL数据库等数据结构的目的,也许可以检查它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58123597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档