Python 3.x 如何从文本文件中提取多个圣经经文?
我试图写一些东西,根据用户的要求引用(来自文本文件)诗句。 我有一些东西可以成功地做到这一点,但仅限于单数诗句Python 3.x 如何从文本文件中提取多个圣经经文?,python-3.x,Python 3.x,我试图写一些东西,根据用户的要求引用(来自文本文件)诗句。 我有一些东西可以成功地做到这一点,但仅限于单数诗句 userinput = input("Enter Book, Chapter, Verse:") file = open("CNT.txt") lines = file.readlines() for line in lines: if userinput in line: print(line) brea
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”时,是否有任何方法添加或更改此代码以允许它获取多个诗句?还是应该为了更有效、更复杂的东西而放弃它呢?根据您的代码和上面的评论,这里有一个答案
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行代表x行]
if/else
块另一个需要注意的是,这是相当低效的。我怀疑整本圣经会很慢。这是因为你要在全文中搜索每一个诗句。您没有利用您知道它们发生在行的开头或顺序的事实。这就是Python的dict或SQL数据库等数据结构的用途,也许可以查看它们。您需要对用户输入进行解析,以获得用户想要的有效诗句列表。例如在此之后,“Rev 6:1-3”将需要解析为
[“Rev 6:1”、“Rev 6:2”、“Rev 6:3”]
。这是一个使用列表而不是单个输入来运行搜索的问题。