2016-12-05 4 views
0

Я пытаюсь раздувать текстовые данные для версии Библии короля Джеймса из файловой системы и перевести эти данные в структуры данных Python. Доступ к книгам, главам и стихам из книги ранее созданные структуры данных. Поиск Библии KJV для текста.Как вы возвращаете список стихов, принадлежащих этой книге?

parse_line(line): 

Учитывая строку текста (т.е. строки) из файла bible.tsv, обрезать все конечные пробелы (с использованием метода «.strip»), а затем разделить его с помощью вкладки разделитель („\ т“)

Преобразование 2-й и 3-й элементы (глава и стих) из полученного списка в целые

Вернись, что список

Это то, что я, как мой код для parse_line. Я считаю, что этот код правильный.

def parse_line(line): 
    line = aline.strip().split('\t') 
    line[1] = int(line[1]) 
    line[2] = int(line[2]) 
    return line 

parse_kjv_tsv():

Создать пустой список, чтобы хранить стихи в bible.tsv файле

Открыть файл kjv.tsv для чтения

Для каждой линии файл, передайте эту строку в parse_line и добавьте вывод parse_line в список стихов

Возврат созданного списка стихов

Это то, что я, как мой код для parse_kjv_tsv():

def parse_kjv_tsv(): 
    kjv_file = open('kjv.tsv', 'r') 
    verses = [] 
    for line in kjv_file: 
     verse = parse_line(line) 
     verses.append(verse) 
    kjv_file.close() 
    return verses 

Это не возвращает нужную информацию. Мне нужно Для каждой строки файла, перейдите эту строку к parse_line и добавьте вывод parse_line в список стихов. Затем верните созданный список стихов.

Например, вывод должен быть:

>>> import bible 
>>> verses = bible.parse_kjv_tsv() 
>>> verses[0] 
['ge', 0, 0, 'In the beginning God created the heaven and the earth.'] 

Обратите внимание, что второй и 3-й элементы «стихи [0]» представляют собой целые числа, а не строки.

доступа БКИ

В этой части, вы будете создавать функции для доступа книги, главы и стихи из ранее созданной структуры данных Python. Вам нужно будет создать следующие функции:

мне нужна помощь с get_book (стихи, книги)

get_book(verses, book): 

Дано:

  • список стихов (т.е.выход parse_kjv_tsv) и
  • название книги (строки)

Вернуться список стихов, которые принадлежат к этой книге

get_chapter(verses, book, chapter): 

Дано:

  • список стихи (т.е. выход parse_kjv_tsv) и
  • название книги (строка) и
  • номер главы (целое число)

Вернуться список стихов, которые принадлежат к этой книге и глава

get_verse(verses, book, chapter, verse): 

Дано:

  • список стихов (т.е. выход parse_kjv_tsv) и
  • название книги (строка) и
  • номер главы (целое число)
  • стих номер (целое число)

Возвращает строку текста этот стих

search_bible(verses, search_text): 

Дано:

  • список стихов (т. выход parse_kjv_tsv) и
  • строку для поиска в этих стихах

Вернуться словарь вашего поиска Результаты

+1

Я очистил форматирование вашего вопроса. Пожалуйста, прочитайте это (https://stackoverflow.com/help/formatting) и убедитесь, что вы используете соответствующую разметку. Не каждый бит дескриптивного текста должен быть полужирным (окруженный '**') или заголовком (начиная с одного или нескольких '#'), а блоки кода (с отступом на четыре пробела) должны использоваться только для содержимого кода или файла. Вы также задаете много вопросов сразу, и это, вероятно, слишком велико. Прочтите [ask] советы по заданию хороших вопросов. – Chris

+0

Спасибо за подсказку. –

ответ

1

Вот что я хотел бы сделать

parse_kjv_tsv(): 
    # Create an empty list to store the verses in the bible.tsv file 
    verses = [] 
    # Open the kjv.tsv file for reading 
    with open('kjv.tsv', 'r') as f: 
     # For each line of the file, pass that line to parse_line and append 
     # the output of parse_line to a list of verses 
     for line in f: 
      verses.append(parse_line(line)) 
    # Return the created list of verses 
    return verses 

FYI - фрагмент выше предполагает, что ваша реализация parse_line верна. Вы должны проверить это, прежде чем использовать это. Я думаю, вы можете пропустить return.

+0

Спасибо за информацию 2шт. –

+0

вы можете просто сделать это (в инструкции with): 'return [parse_line (строка) для строки в f]' –

0

неправильная линия разбора.

parts = line.strip().split('\t') 
parts[1] = int(parts[1]) 
parts[2] = int(parts[2]) 
return parts 

если вы это сделаете, ваш код для работы до конца анализа kjv! вы в основном переопределили параметры функции, которые сделали ее бесплодной.

 Смежные вопросы

  • Нет связанных вопросов^_^