[Python-de] String in Liste wandeln

werndt Stephan.Werndt at t-online.de
Fre Mar 12 14:21:38 CET 2004


Guten Tag,

Tomek Meka wrote:

>wegen der Verschachtelung der Listen.
>
Es hat zwar mit der Ursprungsfrage nichts zu tun, aber diese
Begründung ist mE. nicht richtig. Jeffrey Friedl  zeigt eine Lösung,
und zwar in der zwoten Auflage seines Buches 'Reguläre Ausdrücke',
Seiten 197, 198 der deutschen Ausgabe (O'Reilly, isbn 3-89721-349-4)

In python könnte man zB. sagen:

import re

s = 
'[["abc","abc",["abc","abc"],"abc"],["abc","abc",["abc","abc"],["abc",["abc","abc"]],"abc"],"abc"]'

def R(z) : return re.compile( '\[' + '(?:[^\[\]]|\[' * z + '[^\[\]]*' + 
'\])*' * z + '\]' )
def F(z, s) : return re.findall(R(z), s)

def N(s, z = 0) :
    f_0, f_z = F(z, s), F(z + 1, s)
    if f_0[-1] == f_z[-1] : print f_z, '\n\n', R(z).pattern, '-> tiefe =', z
    else : N(s, z + 1)
   
N(s)

gruß

werndt