Python跨多行解析文本

时间:2016-02-09 21:35:26

标签: 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. 然后是一个空行,
  6. ParseText :: line,
  7. 文字行和
  8. 首先,我真的不知道这是否是任何类型的标准,如XML,JSON ......

    其次,如果是这样,我怎么能把它变成一个json?它不是那么简单,我必须编写一个自定义的解析器。

1 个答案:

答案 0 :(得分: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))

这应该有效,只要文件与您描述的完全一样。