Найти - Пользователи
Полная версия: как быстро парсить следующий текст..
Начало » Python для новичков » как быстро парсить следующий текст..
1
goblin_maks
есть конструкция:
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 нету..просто кажеться что он удобен для данной цели.
l.a.savar
ну с .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']
slav0nic
http://code.google.com/p/python-sqlparse/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB