展开全部
^#!/usr/bin/python3
# -*- coding: utf-8 -*-
def parse(text):
result = []
import re
r1 = re.compile(r'\s*(/[^636f70793231313335323631343130323136353331333361303637\s]+)\s+FaceTracking\s+\{([^\}]*)\}\s+\(([^\)]*)\)')
r2 = re.compile(r'\s*FD_Face\s+\(([^\)]*)\)')
pos = 0
while True:
m = r1.match(text[pos:])
if not m:
break
data = {}
data['source'] = m.group(1)
keys = m.group(2).split(',')
values = m.group(3).split(',')
attrs = dict(map(lambda x,y:[x,y], keys, values))
data.update(attrs)
pos += m.end()
face = []
for x in range(int(data['FaceNumber'])):
m = r2.match(text[pos:])
if not m:
break
face.append(m.group(1).split(','))
pos += m.end()
data['FD_Face'] = face
result.append(data)
return result
def main(input_file, output_file):
f = open(input_file, 'r')
text = f.read()
f.close()
result = parse(text)
buff = []
for data in result:
buff.append('miFileIndex: {miFileIndex}'.format(**data))
buff.append('source: {source}'.format(**data))
buff.append('FaceNumber: {FaceNumber}'.format(**data))
i = 0
for face in data['FD_Face']:
i += 1
buff.append('Face{0}: ({1})'.format(i, ','.join(face)))
buff.append('')
f = open(output_file, 'w')
f.write("\n".join(buff))
f.flush()
f.close()
if __name__ == '__main__':
import sys
if len(sys.argv) == 3:
main(sys.argv[1], sys.argv[2])