2016-02-09 7 views
0

У меня есть текстовый файл, который нужно обработать, где данные отформатированы таким образом, как это:Python Разбор текста в несколько строк

<emptyline> 
Recno:: 0 
URL:: http://domain1.com/ 

ParseText:: 
Home - 360° Virtualisi... 

Recno:: 1 
URL:: http://domain2.com/ 

ParseText:: 
IIS Windows Server 

Recno:: 2 
URL:: http://domain3.com/ 

ParseText:: 
ArrowECS Israel. Grow . ... 

... 

Хорошая новость заключается в том, что формат соответствует, где запись всегда

  1. пустая строка
  2. старт с номером записи
  3. вторая строка это адрес
  4. затем пустая строка,
  5. ParseText :: линия,
  6. текстовая строка и

Во-первых, я действительно не знаю, если это какой-либо тип стандарта, как XML, JSON ...

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

ответ

0

Вы можете просто прочитать строки по одному и добавить записи в список:

records = [] 
with open("filename") as f: 
    while True: 
     if f.readline() == '': break # break if file is empty 
     recno = f.readline().split(":: ")[1] 
     url = f.readline().split(":: ")[1] 
     f.readline() 
     f.readline() # ParseText:: 
     parsetext = f.readline() 
     records.append({ 
      "url": url, 
      "recno": recno, 
      "parsetext": parsetext, 
      }) 

Если вам нужно, что, как JSON, вы можете кодировать его с json.dumps:

import json 
print(json.dumps(records)) 

Это должно работать , пока файл будет точно таким, как вы описали.