Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 4, 2009 10:00:46

goblin_maks
От:
Зарегистрирован: 2008-12-10
Сообщения: 110
Репутация: +  0  -
Профиль   Отправить e-mail  

как быстро парсить следующий текст..

есть конструкция:

mystr = 
"""EXPECTED:
SQL:
select * from my_table

ACTUAL:
PLSQL:
begin
DBMS_OUTPUT.put_line(mypckg.myfunc (256));
end;

MSG:
MSG_FAIL: FAIL
MSG_PASS: PASS"""
необходимо получить следующий словарь..
dict({'EXPECTED' : {'SQL' : 'select * from my_table'}, 'ACTUAL' : {'PLSQL' : 'begin DBMS_OUTPUT.put_line(mypckg.myfunc (256)); end;'}, 'MSG' : {'MSG_FAIL' : 'FAIL' , 'MSG_PASS' : 'PASS'}})
с помощью .split() я так понимаю быстро это сделать не получится ?
подскажите с помощью чего сделать…крайней необходимости использовать именно dict нету..просто кажеться что он удобен для данной цели.



Отредактировано (Сен. 4, 2009 10:01:35)

Офлайн

#2 Сен. 4, 2009 18:58:31

l.a.savar
От:
Зарегистрирован: 2009-06-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

как быстро парсить следующий текст..

ну с .split(), максимум что у меня получилось, правда “FAIL MSG_PASS” не получилось отловить неявным образом :) В общем может быть split(), тут действительно не подойдет. Но если строки будут приблизительно такого же формата - то , в принципе, несложно будет преобразовать получившийся список в словарь.:

mystr ="""EXPECTED:
SQL:
select * from my_table

ACTUAL:
PLSQL:
begin
DBMS_OUTPUT.put_line(mypckg.myfunc (256));
end;

MSG:
MSG_FAIL: FAIL
MSG_PASS: PASS"""
mystr = mystr.replace("\n\n",":")
mystr = mystr.replace("MSG_PASS",":MSG_PASS")
rlist=mystr.split(":")
mylist = [line.strip().replace("\n","") for line in rlist]

print mylist

['EXPECTED', 'SQL', 'select * from my_table', 'ACTUAL', 'PLSQL', 'begin DBMS_OUTPUT.put_line(mypckg.myfunc (256)); end;', 'MSG', 'MSG_FAIL', 'FAIL', 'MSG_PASS', 'PASS']



Отредактировано (Сен. 4, 2009 20:12:32)

Офлайн

#3 Сен. 6, 2009 11:22:47

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

как быстро парсить следующий текст..

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version