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

独裁者

我正在尝试编写一些内容,根据用户的要求引用(从文本文件中)经文。我有一些可以成功做到这一点的东西,但仅限于单节经文。

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()

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

  1. 子串,例如 userinput[:3]
  2. 字符串方法,例如 userinput.find(":")
  3. 列表推导式 [x in line for x in verses]
  4. if/else

另一件需要注意的是,这是非常低效的。我怀疑整本圣经这会很慢。这是因为您正在搜索整个文本以查找每节经文。您没有利用您知道它们出现在行首或按顺序发生的事实。这就是诸如 Python 的 dict 或 SQL 数据库之类的数据结构的用途,也许可以查看它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章