首页 > 解决方案 > Extract specific portions of a string variable into a list of arrays

问题描述

I have a string variable in python which has the following contents:

InputString =

HEADER 6
BGNLIB 19, 4, 9, 16, 11, 15, 19, 4, 12, 16, 8, 30
LIBNAME case1_lib
UNITS 0.0009999999999999998, 9.99999999999999e-10
BGNSTR 19, 4, 9, 16, 11, 35, 19, 4, 12, 16, 8, 30
STRNAME od_co_m1_conn


BOUNDARY
LAYER 6
DATATYPE 0
XY -25: -115
-25: 115
25: 115
25: -115
-25: -115
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY -20: 45
-20: 85
20: 85
20: 45
-20: 45
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY -20: -85
-20: -45
20: -45
20: -85
-20: -85
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY -25: -115
-25: 115
25: 115
25: -115
-25: -115
ENDEL


ENDSTR
BGNSTR 19, 4, 9, 16, 11, 35, 19, 4, 12, 16, 8, 30
STRNAME file1_corrected


BOUNDARY
LAYER 6
DATATYPE 0
XY 140: 2450
140: 2520
710: 2520
710: 2450
140: 2450
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 220: -110
220: -40
790: -40
790: -110
220: -110
ENDEL


BOUNDARY
LAYER 25
DATATYPE 0
XY -5: -165
-5: 15
955: 15
955: -165
-5: -165
ENDEL


BOUNDARY
LAYER 26
DATATYPE 0
XY -5: 2395
-5: 2575
955: 2575
955: 2395
-5: 2395
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 135: 30
135: 100
295: 100
295: 30
135: 30
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 190: 690
240: 690
240: 870
815: 870
815: 940
240: 940
240: 1120
190: 1120
190: 690
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 245: -100
765: -100
765: -50
630: -50
630: 205
580: 205
580: -50
245: -50
245: -100
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 165: 2460
580: 2460
580: 2200
630: 2200
630: 2460
685: 2460
685: 2510
165: 2510
165: 2460
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 60: 450
60: 580
110: 580
110: 450
60: 450
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 60: 1310
60: 1440
110: 1440
110: 1310
60: 1310
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 320: 450
320: 580
370: 580
370: 450
320: 450
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 320: 1310
320: 1440
370: 1440
370: 1310
320: 1310
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 450: 665
450: 715
500: 715
500: 665
450: 665
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 450: 1110
450: 1160
500: 1160
500: 1110
450: 1110
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 580: 450
580: 580
630: 580
630: 450
580: 450
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 580: 1310
580: 1440
630: 1440
630: 1310
580: 1310
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 710: 665
710: 715
760: 715
760: 665
710: 665
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 710: 1110
710: 1160
760: 1160
760: 1110
710: 1110
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 840: 450
840: 580
890: 580
890: 450
840: 450
ENDEL


BOUNDARY
LAYER 51
DATATYPE 0
XY 840: 1310
840: 1440
890: 1440
890: 1310
840: 1310
ENDEL


BOUNDARY
LAYER 32
DATATYPE 0
XY -275: 1300
-275: 1450
920: 1450
920: 1300
-275: 1300
ENDEL


BOUNDARY
LAYER 32
DATATYPE 0
XY -80: 440
-80: 590
920: 590
920: 440
-80: 440
ENDEL


BOUNDARY
LAYER 32
DATATYPE 0
XY 430: 645
520: 645
520: 1090
690: 1090
690: 645
780: 645
780: 1180
430: 1180
430: 645
ENDEL


BOUNDARY
LAYER 17
DATATYPE 7
XY 5: 80
5: 2330
35: 2330
35: 80
5: 80
ENDEL


BOUNDARY
LAYER 17
DATATYPE 7
XY 915: 80
915: 2330
945: 2330
945: 80
915: 80
ENDEL


TEXT
LAYER 127
TEXTTYPE 0
PRESENTATION 9
STRANS 0
MAG 0.05000000074505806
XY 605: 1135


STRING "SA_out"ENDEL


SREF
SNAME "poly_co_conn"
STRANS 0
XY 670: 905
ENDEL


SREF
SNAME "poly_co_conn"
STRANS 0
XY 800: 905
ENDEL


AREF
SNAME "od_co_m1_conn"
STRANS 0
ANGLE 90.0
COLROW 1, 3
XY 635: -75
635: -25
245: -75
ENDEL


SREF
SNAME "poly_co_conn"
STRANS 0
XY 410: 905
ENDEL


SREF
SNAME "SA_inv3"
STRANS 0
XY -5: 905
ENDEL


AREF
SNAME "od_co_m1_conn"
STRANS 0
ANGLE 90.0
COLROW 1, 3
XY 555: 2485
555: 2535
165: 2485
ENDEL


SREF
SNAME "poly_co_conn"
STRANS 0
XY 280: 65
ENDEL


SREF
SNAME "poly_co_conn"
STRANS 0
XY 150: 65
ENDEL


SREF
SNAME "poly_co_conn"
STRANS 0
XY 540: 905
ENDEL


SREF
SNAME "SA_inv3"
STRANS 0
XY 515: 905
ENDEL


SREF
SNAME "SA_inv3"
STRANS 0
XY 255: 905
ENDEL


ENDSTR
BGNSTR 19, 4, 9, 16, 11, 35, 19, 4, 12, 16, 8, 30
STRNAME SA_inv3


BOUNDARY
LAYER 3
DATATYPE 0
XY -40: 40
-40: 1450
480: 1450
480: 40
-40: 40
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 300: -745
300: -145
375: -145
375: -745
300: -745
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 65: -745
65: -145
140: -145
140: -745
65: -745
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 65: -745
65: -145
375: -145
375: -745
65: -745
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 300: -745
300: -145
375: -145
375: -745
300: -745
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 170: -745
170: -145
270: -145
270: -745
170: -745
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 65: -745
65: -145
140: -145
140: -745
65: -745
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 300: 145
300: 1345
375: 1345
375: 145
300: 145
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 65: 145
65: 1345
140: 1345
140: 145
65: 145
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 65: 145
65: 1345
375: 1345
375: 145
65: 145
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 300: 145
300: 1345
375: 1345
375: 145
300: 145
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 170: 145
170: 1345
270: 1345
270: 145
170: 145
ENDEL


BOUNDARY
LAYER 6
DATATYPE 0
XY 65: 145
65: 1345
140: 1345
140: 145
65: 145
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 270: -825
270: -745
300: -745
300: -825
270: -825
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 270: -145
270: -65
300: -65
300: -145
270: -145
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 270: -825
270: -65
300: -65
300: -825
270: -825
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 140: -825
140: -745
170: -745
170: -825
140: -825
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 140: -145
140: -65
170: -65
170: -145
140: -145
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 140: -745
140: -145
170: -145
170: -745
140: -745
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 140: -825
140: -65
170: -65
170: -825
140: -825
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 270: 1345
270: 1425
300: 1425
300: 1345
270: 1345
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 270: 65
270: 145
300: 145
300: 65
270: 65
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 270: 65
270: 1425
300: 1425
300: 65
270: 65
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 140: 1345
140: 1425
170: 1425
170: 1345
140: 1345
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 140: 65
140: 145
170: 145
170: 65
140: 65
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 140: 145
140: 1345
170: 1345
170: 145
140: 145
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 140: 65
140: 1425
170: 1425
170: 65
140: 65
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 140: -145
140: 150
170: 150
170: -145
140: -145
ENDEL


BOUNDARY
LAYER 17
DATATYPE 0
XY 270: -145
270: 150
300: 150
300: -145
270: -145
ENDEL


BOUNDARY
LAYER 67
DATATYPE 0
XY 25: -810
25: -80
415: -80
415: -810
25: -810
ENDEL


BOUNDARY
LAYER 68
DATATYPE 0
XY 25: 80
25: 1410
415: 1410
415: 80
25: 80
ENDEL


BOUNDARY
LAYER 25
DATATYPE 0
XY 0: 0
0: 1490
440: 1490
440: 0
0: 0
ENDEL


BOUNDARY
LAYER 26
DATATYPE 0
XY 0: -890
0: 0
440: 0
440: -890
0: -890
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: -715
330: -675
370: -675
370: -715
330: -715
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: -590
330: -550
370: -550
370: -590
330: -590
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: -465
330: -425
370: -425
370: -465
330: -465
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: -340
330: -300
370: -300
370: -340
330: -340
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: -215
330: -175
370: -175
370: -215
330: -215
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: -715
200: -675
240: -675
240: -715
200: -715
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: -590
200: -550
240: -550
240: -590
200: -590
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: -465
200: -425
240: -425
240: -465
200: -465
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: -340
200: -300
240: -300
240: -340
200: -340
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: -215
200: -175
240: -175
240: -215
200: -215
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: -715
70: -675
110: -675
110: -715
70: -715
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: -590
70: -550
110: -550
110: -590
70: -590
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: -465
70: -425
110: -425
110: -465
70: -465
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: -340
70: -300
110: -300
110: -340
70: -340
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: -215
70: -175
110: -175
110: -215
70: -215
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 175
70: 215
110: 215
110: 175
70: 175
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 285
70: 325
110: 325
110: 285
70: 285
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 395
70: 435
110: 435
110: 395
70: 395
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 505
70: 545
110: 545
110: 505
70: 505
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 615
70: 655
110: 655
110: 615
70: 615
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 725
70: 765
110: 765
110: 725
70: 725
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 835
70: 875
110: 875
110: 835
70: 835
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 945
70: 985
110: 985
110: 945
70: 945
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 1055
70: 1095
110: 1095
110: 1055
70: 1055
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 1165
70: 1205
110: 1205
110: 1165
70: 1165
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 70: 1275
70: 1315
110: 1315
110: 1275
70: 1275
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 725
200: 765
240: 765
240: 725
200: 725
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 615
200: 655
240: 655
240: 615
200: 615
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 505
200: 545
240: 545
240: 505
200: 505
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 395
200: 435
240: 435
240: 395
200: 395
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 285
200: 325
240: 325
240: 285
200: 285
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 175
200: 215
240: 215
240: 175
200: 175
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 835
200: 875
240: 875
240: 835
200: 835
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 945
200: 985
240: 985
240: 945
200: 945
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 1055
200: 1095
240: 1095
240: 1055
200: 1055
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 1165
200: 1205
240: 1205
240: 1165
200: 1165
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 200: 1275
200: 1315
240: 1315
240: 1275
200: 1275
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 1275
330: 1315
370: 1315
370: 1275
330: 1275
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 1165
330: 1205
370: 1205
370: 1165
330: 1165
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 1055
330: 1095
370: 1095
370: 1055
330: 1055
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 945
330: 985
370: 985
370: 945
330: 945
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 835
330: 875
370: 875
370: 835
330: 835
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 175
330: 215
370: 215
370: 175
330: 175
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 285
330: 325
370: 325
370: 285
330: 285
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 395
330: 435
370: 435
370: 395
330: 395
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 505
330: 545
370: 545
370: 505
330: 505
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 615
330: 655
370: 655
370: 615
330: 615
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY 330: 725
330: 765
370: 765
370: 725
330: 725
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 325: -745
325: -145
375: -145
375: -745
325: -745
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 195: -745
195: -145
245: -145
245: -745
195: -745
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 65: -745
65: -145
115: -145
115: -745
65: -745
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 325: 145
325: 1345
375: 1345
375: 145
325: 145
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 195: 145
195: 1345
245: 1345
245: 145
195: 145
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY 65: 145
65: 1345
115: 1345
115: 145
65: 145
ENDEL


BOUNDARY
LAYER 205
DATATYPE 6
XY 90: 25
90: 1465
350: 1465
350: 25
90: 25
ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 32768
XY 140: -146


STRING "& SerialNumber 000000"ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 32768
XY 140: -146


STRING "& Distributor TSMC"ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 32768
XY 140: -146


STRING "& Metric 1"ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 32768
XY 140: -146


STRING "& PDK Version "tsmcN28_DNQ6=NWKh_<p=mA_Bt_20140417""ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 32768
XY 140: -146


STRING "& PDK TechNode "CLN28HPC""ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 32768
XY 140: -146


STRING "& Product tsmcN28_PDK"ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 32768
XY 140: -146


STRING "& Vendor  Taiwan Semiconductor manufacturing Corp."ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 0
XY 140: 146


STRING "& SerialNumber 000000"ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 0
XY 140: 146


STRING "& Distributor TSMC"ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 0
XY 140: 146


STRING "& Metric 1"ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 0
XY 140: 146


STRING "& PDK Version "tsmcN28_DNQ6=NWKh_<p=mA_Bt_20140417""ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 0
XY 140: 146


STRING "& PDK TechNode "CLN28HPC""ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 0
XY 140: 146


STRING "& Product tsmcN28_PDK"ENDEL


TEXT
LAYER 63
TEXTTYPE 63
PRESENTATION 5
STRANS 0
XY 140: 146


STRING "& Vendor  Taiwan Semiconductor manufacturing Corp."ENDEL


BOUNDARY
LAYER 75
DATATYPE 0
XY -40: -850
-40: -40
480: -40
480: -850
-40: -850
ENDEL


BOUNDARY
LAYER 1337
DATATYPE 0
XY 65: -745
65: -145
375: -145
375: -745
65: -745
ENDEL


BOUNDARY
LAYER 1337
DATATYPE 0
XY 65: 145
65: 1345
375: 1345
375: 145
65: 145
ENDEL


TEXT
LAYER 127
TEXTTYPE 0
PRESENTATION 5
STRANS 32768
XY 337: -445


STRING "S"ENDEL


TEXT
LAYER 127
TEXTTYPE 0
PRESENTATION 5
STRANS 32768
XY 220: -445


STRING "D"ENDEL


TEXT
LAYER 127
TEXTTYPE 0
PRESENTATION 5
STRANS 32768
XY 103: -445


STRING "S"ENDEL


TEXT
LAYER 127
TEXTTYPE 0
PRESENTATION 5
STRANS 32768
XY 140: -145


STRING "nch_hvt_mac_1.2/0.03_"ENDEL


TEXT
LAYER 127
TEXTTYPE 0
PRESENTATION 5
STRANS 0
XY 337: 745


STRING "S"ENDEL


TEXT
LAYER 127
TEXTTYPE 0
PRESENTATION 5
STRANS 0
XY 220: 745


STRING "D"ENDEL


TEXT
LAYER 127
TEXTTYPE 0
PRESENTATION 5
STRANS 0
XY 103: 745


STRING "S"ENDEL


TEXT
LAYER 127
TEXTTYPE 0
PRESENTATION 5
STRANS 0
XY 140: 145


STRING "pch_hvt_mac_2.4/0.03_"ENDEL


ENDSTR
BGNSTR 19, 4, 9, 16, 11, 35, 19, 4, 12, 16, 8, 30
STRNAME poly_co_conn


BOUNDARY
LAYER 17
DATATYPE 0
XY -15: -70
-15: 70
15: 70
15: -70
-15: -70
ENDEL


BOUNDARY
LAYER 30
DATATYPE 0
XY -20: -20
-20: 20
20: 20
20: -20
-20: -20
ENDEL


BOUNDARY
LAYER 31
DATATYPE 0
XY -35: -35
-35: 35
35: 35
35: -35
-35: -35
ENDEL


ENDSTR


ENDLIB

Now from the above string variable, I want to extract all blocks of text which are in the below format:

BOUNDARY
LAYER 6
DATATYPE 0
XY Value1: Value2
Value3: Value4
Value5: Value6
Value7: Value8
Value9: Value10
ENDEL

And after extracting the blocks similar to the above block, I want to get the XY values from the above block and store it into an array. For example, the XY values for the above block that I intend to extract is shown below:

Value1: Value2
Value3: Value4
Value5: Value6
Value7: Value8
Value9: Value10

After this extraction, I would like to store these values into 5*2 arrays like this: (Please note that the length of the array might change depending on the size of XY values present in the block of text. You should note that in some blocks of the string, the XY values have 9 rows and 2 columns. In this case, the size of the array should be 9*2)

array1 = array([[Value1, Value2],
                [Value3, Value4],
                [Value5, Value6],
                [Value7, Value8],
                [Value9, Value10]])

and stack up the extracted arrays of XY values from all blocks of text into a single list of arrays like this:

Outputlist = [array1,array2,array3,....,arrayn]

How could I accomplish this? I have tried the below piece of code but this doesn't work as expected at all.

def f2(InputString):
    retval = ''
    for char in foo:
        retval += char if not char == '\n' else ''
        if char == '\n':
            print(retval)
            if 'BOUNDARY' in retval:
                startscan = True
            elif 'ENDEL' in retval:
                startscan = False
            retval = ''

标签: pythonarrayspython-3.xstring

解决方案


我认为您还应该考虑从您的输入中考虑layerdatatype价值观。这是一个示例解决方案,它仅提取您的坐标,但函数还解析其余提供的值,您可以在将来存储这些值,例如dictionaries

def parse_cords(cords):
    return list(map(int, cords.split(': ')))

def parse_boundary(boundary):
    layer = int(boundary[0].split()[1])
    datatype = int(boundary[1].split()[1])
    boundary[2] = boundary[2].lstrip('XY ')
    xy_pair = list(map(parse_cords, boundary[2:]))
    return layer, datatype, xy_pair

def f2(inputString):
    lines = inputString.splitlines()
    idx = 0
    while idx < len(lines):
        if lines[idx] == 'BOUNDARY':
            end_idx = lines.index('ENDEL', idx)
            layer, datatype, xy_pair = parse_boundary(lines[idx+1:end_idx])
            yield xy_pair
            idx = end_idx
        else:
            idx += 1

output = list(f2(InputString))
print(output)

前 3 个边界的输出:

[
    [[-25, -115], [-25, 115], [25, 115], [25, -115], [-25, -115]],
    [[-20, 45], [-20, 85], [20, 85], [20, 45], [-20, 45]],
    [[-20, -85], [-20, -45], [20, -45], [20, -85], [-20, -85]
]

推荐阅读