現在、この種の形式のファイルからいくつかのデータを抽出しようとしています:
#12 = ADVANCED_FACE ( 'NONE', ( #194 ), #326, .F. ) ;
...
#159 = EDGE_LOOP ( 'NONE', ( #21, #124, #264, #145 ) ) ;
...
#194 = FACE_OUTER_BOUND ( 'NONE', #159, .T. ) ;
...
#326 = PLANE ( 'NONE', #352 ) ;
次のコードを使用して ADVANCED_FACE を検索し、次のように辞書に追加しました。
DoL = {}
#search for advanced faces and extract IDs
faces_txt = re.findall(r'#(\d+) = ADVANCED_FACE.*;', text)
faces = [int(face) for face in faces_txt]
#append advanced face IDs to dict
for i, faceId in enumerate(faces):
DoL.update({"Face{}".format(i): {'AdvancedFace': [faceId]}})
これにより、すべての ADVANCED_FACES が検出され、次のような出力が作成されます。
Face0 = {'AdvancedFace': [12]}
Face1 = {'AdvancedFace': [73]}
Face2 = {'AdvancedFace': [99]}
Face3 = {'AdvancedFace': [131]}
Face4 = {'AdvancedFace': [181]}
Face5 = {'AdvancedFace': [214]}
Face6 = {'AdvancedFace': [244]}
Face7 = {'AdvancedFace': [273]}
Face8 = {'AdvancedFace': [330]}
Face9 = {'AdvancedFace': [358]}
次に、出力が次のようになるように、すべての FACE_OUTER_BOUND を見つけて、同様の方法で辞書に追加する必要があります。
Face0 = {'AdvancedFace': [12], 'FaceOuterBound': [194]}
Face1 = {'AdvancedFace': [73], 'FaceOuterBound': [53]}
...
次の方法を使用してみましたが、「dict」には属性「append」がないというエラーがスローされます。
#extract face outer bound IDs from advanced face strings
fob_txt = re.findall(r'ADVANCED_FACE.{13}#(\d+).*;', text)
fobs = [int(fob) for fob in fob_txt]
#append face outer bound IDs to dict
for i, fobId in enumerate(fobs):
DoL["Face{}".format(i)].append({'FaceOuterBounds': (fobId)})