我试图写一些东西,将引用(从一个文本文件)的诗句,应用户的要求。我有一些东西可以成功地做到这一点,但只适用于奇异的诗句。
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”之类的内容时,是否有任何方式添加或更改此代码以允许它获取多个诗句?还是应该完全抛弃它,转而选择更有效、更复杂的东西?
发布于 2019-09-26 21:14:32
下面是根据您的代码和上面的注释为您提供的答案。
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]
userinput.find(":")
[x in line for x in verses]
if/else
)阻塞另一件要注意的是,这是相当低效的。我怀疑整本圣经都会很慢。这是因为你正在搜索整个文本的每一节参考。你没有利用这样一个事实:你知道它们发生在行的开头或顺序上。这就是生成Python的dict或SQL数据库等数据结构的目的,也许可以检查它们。
https://stackoverflow.com/questions/58123597
复制相似问题