Вот моя дилемма: я пишу приложение на Python, которое позволит мне искать плоский файл (KJV bible.txt) для определенных строк и возвращать номер строки, книгу и искомую строку. Однако я также хотел бы вернуть главу и стих, в котором была найдена строка. Это требует, чтобы я пошел в начало строки и получил номер главы и стиха. Я новичок в Python, и в настоящее время все еще читаю учебник по Python Гвидо ван Россума. Это то, что я пытаюсь сделать для группы изучения Библии; что-то переносимое, что можно запустить в модуле cmd практически где угодно. Я ценю любую помощь ... Спасибо. Ниже приведен отрывок из примера библейской главы:
Daniel
1:1 In the third year of the reign of Jehoiakim king of Judah came
Nebuchadnezzar king of Babylon unto Jerusalem, and besieged it.
Скажем, я искал 'Jehoiakim', и одним из результатов поиска была первая строка выше. Я хотел бы перейти к числам, которые предшествуют этой строке (в данном случае 1: 1), получить главу (1) и стих (1) и вывести их на экран.
1:2 And the Lord gave Jehoiakim king of Judah into his hand, with part
of the vessels of the house of God: which he carried into the land of
Shinar to the house of his god; and he brought the vessels into the
treasure house of his god.
Код:
import os
import sys
import re
word_search = raw_input(r'Enter a word to search: ')
book = open("KJV.txt", "r")
first_lines = {36: 'Genesis', 4812: 'Exodus', 8867: 'Leviticus', 11749: 'Numbers', 15718: 'Deuteronomy',
18909: 'Joshua', 21070: 'Judges', 23340: 'Ruth', 23651: 'I Samuel', 26641: 'II Samuel',
29094: 'I Kings', 31990: 'II Kings', 34706: 'I Chronicles', 37378: 'II Chronicles',
40502: 'Ezra', 41418: 'Nehemiah', 42710: 'Esther', 43352: 'Job', 45937: 'Psalms', 53537: 'Proverbs',
56015: 'Ecclesiastes', 56711: 'The Song of Solomon', 57076: 'Isaih', 61550: 'Jeremiah',
66480: 'Lamentations', 66961: 'Ezekiel', 71548: 'Daniel' }
for ln, line in enumerate(book):
if word_search in line:
first_line = max(l for l in first_lines if l < ln)
bibook = first_lines[first_line]
template = "\nLine: {0}\nString: {1}\nBook:\n"
output = template.format(ln, line, bibook)
print output