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”]
    。这是一个使用列表而不是单个输入来运行搜索的问题。