数日前、SOCommunity がパーサーを手伝ってくれました。すなわちこれ:
def MyList(self):
class _MyList(list):
def __init__(self, parent):
self.parent = parent
list.__init__(self)
top = current = _MyList(None)
ntab_old = 0
for line in self.raw_data:
ntab = line.count('\t')
if(ntab_old > ntab):
for _ in range(ntab_old-ntab):
current = current.parent
elif(ntab_old<ntab):
current.append(_MyList(current))
current = current[-1]
current.append(line.strip('\t').strip('|'))
ntab_old =ntab
return top
次のようなデータを解析します。
|[nothing detected] www.neopets.com/
|status: (referer=http://www.google.com)saved 55189 bytes /fetch_d4cd213a56276ca726ddd437a1e75f1024ab7799
|file: fetch_d4cd213a56276ca726ddd437a1e75f1024ab7799: 55189 bytes
|file: decoding_367af53b4963986ecdeb9c09ce1a405b5b1ecd91: 68 bytes
|[nothing detected] (script) images.neopets.com/js/common.js?v=6
|status: (referer=http://www.google.com)saved 1523 bytes /fetch_8eeadcc08d4cb48c02dedf18648510b75190d1d7failure: [Errno 13] Permission denied: '/tmp/tmpsha1_8d7fb3ff1ef087c7ea2bf044dee294735a76ed4b.js'
|file: fetch_8eeadcc08d4cb48c02dedf18648510b75190d1d7: 1523 bytes
これは、各サブセクションを含むネストされたリストを返すことになっています。ただし、どこからともなく、次のエラーが発生します。
current.append(line.strip('\t').strip('|'))
AttributeError: 'NoneType' object has no attribute 'append'
どんな助けでもいただければ幸いです