parse a string (Cadence Allegro Netlist) to dictionary

Joel Davis callmeclaudius at gmail.com
Sat Nov 7 01:25:47 EST 2009


On Nov 5, 7:23 pm, metal <metal... at gmail.com> wrote:
> On 11月6日, 上午4时02分, Leland <lelandp... at gmail.com> wrote:
>
>
>
> > Hi,
>
> > I always use readline(), strip(), split() and so on to parse a string.
> > Is there some elegant way to parse the following string into a
> > dictionary {'50MHZ_CLK_SRC' : 'U122.2, R1395.1'}?
>
> > NET_NAME
> > '50MHZ_CLK_SRC'
> >  '@TEST_LIB.TEST(SCH_1):50MHZ_CLK_SRC':
> >  C_SIGNAL='@test_lib.test(sch_1):\50mhz_clk_src\';
> > NODE_NAME     U122 2
> >  '@TEST_LIB.TEST(SCH_1):PAGE92_I223 at INF_LOGIC.CY2305(CHIPS)':
> >  'CLK2': CDS_PINID='CLK2';
> > NODE_NAME     R1395 1
> >  '@TEST_LIB.TEST(SCH_1):PAGE92_I232 at INF_RESISTORS.RESISTOR(CHIPS)':
> >  'A': CDS_PINID='A';
>
> > Thanks,
> > Leland
>
> not very elegantly too.
>
> x = re.findall("_NAME[\n\s']+((?<=').+(?=')|\w+\s+\w+)", s)
> """
> print {x[0]: x[1:]}>>> {'50MHZ_CLK_SRC': ['U122 2', 'R1395 1']}
>
> """

@metal

Apparently you and I differ considerably on our conceptions of
elegance.



More information about the Python-list mailing list