2017-01-18 4 views
0

Я использую приведенный ниже пример от Reading data blocks from a file in Python, но у меня возникают проблемы, он всегда игнорирует первый блок текста из текстового файла.Python: Анализ текстового файла в блоках

Я внес некоторые изменения в сценарий из того, что находится в исходном вопросе SO, и он запускается, но всегда начинается с возвращения второго блока в текстовый файл, за которым следует третий блок, первый блок никогда не возвращается.

Любая помощь очень ценится.

def read_blocks(input_file, i, j): 
    empty_lines = 0 
    blocks = [] 
    for line in open(input_file): 
     # Check for empty/commented lines 
     if not line or line == '\n': 
      # If 1st one: new block 
      if empty_lines == 0: 
       blocks.append([]) 
       blocks[-1].append(line) 
      empty_lines += 1 
     # Non empty line: add line in current(last) block 
     else: 
      empty_lines = 0 
      blocks[-1].append(line) 
    return blocks[i:j + 1] 

for block in read_blocks("C:\\test_file.txt", 1, 1): 
    print '-> block' 
    for line in block: 
     print line 

Текстовый файл

Block: 1 
Block: 1.2 
Block: 1.3 

Block: 2 
Block: 2.1 
Block: 2.2 
Block: 2.3 

Block: 3 
Block: 3.1 

ответ

0

Все сортируют, оказывается, это была глупая ошибка. Я проходил от 1 до read_blocks для параметра i, который игнорировал блок «0», исправление было:

for block in read_blocks("C:\\test_file.txt", 0, 1): 
    print '-> block' 
    for line in block: 
     print line 
Смежные вопросы