Hallo Andreas Am 07.07.2011 11:05, schrieb Kyek, Andreas, VF-DE:
Moin zusammen,
ein Kollege hat ein Problem an mich herangetragen, das ich nicht so "einfach" und "elegant" zu lösen weiss:
Gegebenn ist eine Datei mit Datensätzen in der Form:
data1|data2|ary1{data3|data4|data5}|ary2{data6|data7}|data8
d.h. die einzelnen Felder sind durch "|" getrennt; ein einzelner Datensatz kann allerdings wieder ein "Array" sein, dessen einzelne Element durch "|" getrennt werden.
Ein Einlesen im Shell-Skript mit
IFS='|' set -a array $data
splitted gnadenlos bei _allen_ Pipe Zeichen.
Wie bekomme ich das hin, das ary1 und ary2 zu einem Feldelement werden? (Die Pipesymbole innerhalb von {} könnten dabei durch anderee Zeichen ersetzt werden)
Ideen? Python ?
import re s = """data1|data2|ary1{data3|data4|data5}|ary2{data6|data7}|data8""" print re.findall("(?:^||)([^|]+?{[^{]+}|[^|{]+)",s) ['data1', 'data2', 'ary1{data3|data4|data5}', 'ary2{data6|data7}', 'data8'] Gruß Werner -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org