1

わかりましたので、作成した辞書 (DoL) から変数を読み取っています。

for i in DoL.keys():
    fobId = DoL["{}".format(i)]["FaceOuterBound"]

たとえば、DoL の最初の反復で次のようにします。

fobId = 194

変数を含む正規表現 findall 式を作成しようとしましたfobId:

edgeloop_txt = re.findall(r'^#'+str(fobId)+r'.*#(\d+).*;', text)

text# で始まる行を見つけるにはfobId:

#194 = FACE_OUTER_BOUND ( 'NONE', #159, .T. ) ;

そして最後に番号 #159 を抽出します

私の出力print(edgeloop_txt)には空のリストが表示されます:

[]
[] 
[]
...

編集(MCVEを提供):

サンプルテキスト:

...
#190 = DIRECTION ( 'NONE',  ( -1.000000000000000000, -0.0000000000000000000, -0.0000000000000000000 ) ) ;
#191 = DATE_AND_TIME ( #277, #349 ) ;
#192 = ORIENTED_EDGE ( 'NONE', *, *, #253, .T. ) ;
#193 = CARTESIAN_POINT ( 'NONE',  ( 75.00000000000000000, 35.00000000000000000, 0.0000000000000000000 ) ) ;
#194 = FACE_OUTER_BOUND ( 'NONE', #159, .T. ) ;
#195 = ORIENTED_EDGE ( 'NONE', *, *, #205, .T. ) ;
#196 = CARTESIAN_POINT ( 'NONE',  ( 0.0000000000000000000, 35.00000000000000000, 0.0000000000000000000 ) ) ;
...

私が使用しているコード:

for i in DoL.keys():
    fobId = DoL["{}".format(i)]["FaceOuterBound"]
    edgeloop_txt = re.findall(r'^#'+str(fobId)+r'.*#(\d+).*;', text)
    print(edgeloop_txt)

DoL は辞書そのものです。

{'Face0': {'AdvancedFace': 12, 'FaceOuterBound': 194, 'Plane': 326}, 
'Face1': {'AdvancedFace': 73, 'FaceOuterBound': 53, 'Plane': 230}, 
'Face2': {'AdvancedFace': 99, 'FaceOuterBound': 121, 'Plane': 123}, 
'Face3': {'AdvancedFace': 131, 'FaceOuterBound': 268, 'Plane': 270}, 
...
'Face9': {'AdvancedFace': 358, 'FaceOuterBound': 9, 'Plane': 363}}
4

1 に答える 1