Найти - Пользователи
Полная версия: помогите с разбором rtf файла. regexp rtf
Начало » Python для экспертов » помогите с разбором rtf файла. regexp rtf
1
bezrukov Ilya
Приветствую,

помогите вытащить координаты одиночной строки: \par

re.match('^\\par \n', text, re.M) #не работает(( возвращает None
text="""
.................
\f52\fs16\cf1\insrsid3684370 \loch\af52\dbch\af31505\hich\f52 \'e0}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 \hich\af1\dbch\af31505\loch\f1  ses fonds }{\rtlch\fcs1 \af52\afs16 \ltrch\fcs0 \f52\fs16\cf1\insrsid3684370 
\loch\af52\dbch\af31505\hich\f52 \'e9}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 num}{\rtlch\fcs1 \af52\afs16 \ltrch\fcs0 \f52\fs16\cf1\insrsid3684370 \loch\af52\dbch\af31505\hich\f52 \'e9}{\rtlch\fcs1 
\af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 r}{\rtlch\fcs1 \af52\afs16 \ltrch\fcs0 \f52\fs16\cf1\insrsid3684370 \loch\af52\dbch\af31505\hich\f52 \'e9}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
\hich\af1\dbch\af31505\loch\f1 s.
\par 
\par }{\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \b\f1\fs16\cf13\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 Difference # 10}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
\par }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf13\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 S:}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
\par }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf13\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 k:\\Texts\\English\\Resources\\www.bloomberg.com\\Texts\\invest\\news_pid=20601212&sid=aFty2T7nwlno.txt}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 
\f1\fs16\cf1\insrsid3684370 
\par }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf2\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 Weak}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 \hich\af1\dbch\af31505\loch\f1  Underpinnings
\par }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf13\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 T1:}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
\par }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf6\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 Faibles }{\rtlch\fcs1 \af52\afs16 \ltrch\fcs0 \f52\fs16\cf6\insrsid3684370 \loch\af52\dbch\af31505\hich\f52 \'e9}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 
\f1\fs16\cf6\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 tayages}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
\par }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf13\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 T2:}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
\par }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf11\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 Faible Underpinnings}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
\par 
\par }{\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \b\f1\fs16\cf13\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 Difference # 11}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
\par }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf13\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 S:}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
\par }{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf13\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 k:\\Texts\\English\\Resources\\www.bloomberg.com\\Texts\\invest\\news_pid=20601212&sid=aFty2T7nwlno.txt}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 
\f1\
......................
"""

PS: текст вырезка из rtf файла. Может есть более правильный метов парсинга rtf файлов, а я не знаю. Но в любом случае хорошо бы разобраться с магией regexp'ов.
py.user.next
>>> import re
>>> 
>>> s = """
... \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 r}{\rtlch\fcs1 \af52\afs16 \ltrch\fcs0 \f52\fs16\cf1\insrsid3684370 \loch\af52\dbch\af31505\hich\f52 \'e9}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
... \hich\af1\dbch\af31505\loch\f1 s.
... \par 
... \par }{\rtlch\fcs1 \ab\af1\afs16 \ltrch\fcs0 \b\f1\fs16\cf13\insrsid3684370 \hich\af1\dbch\af31505\loch\f1 Difference # 10}{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \f1\fs16\cf1\insrsid3684370 
... """
>>> 
>>> match = re.search(r'^\\par $', s, re.M)
>>> match and match.group()
'\\par '
>>>

bezrukov Ilya
Но в любом случае хорошо бы разобраться с магией regexp'ов.
в питоне они немного бажные, так что, если что-то не работает, ещё не факт, что ты неправильно составил
4kpt_II
Был в свое время pyRTF, но что с проектом я не знаю. Можете глянуть на досуге…
bezrukov Ilya
Спасибо.
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