У меня возникла проблема с преобразованием слова-export-html-файла. Мне нужно было получить текст .doc-файла со всей информацией о стиле (жирный, курсив ...). Очиститель тегов в моем коде работает хорошо, и теперь у меня есть result.txt только с тегами.Сочетание различных строк в длинном .txt в python
Проблема в том, что html-export разделяет строки, где это не должно. Он мог бы поставить \ n между одной строкой.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
<TITLE>19</TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice 4.1.3 (Unix)">
<META NAME="AUTHOR" CONTENT="IGM">
<META NAME="CREATED" CONTENT="20160425;12590000">
<META NAME="CHANGEDBY" CONTENT="Arno Michalowski">
<META NAME="CHANGED" CONTENT="20160425;13460000">
<META NAME="SDFOOTNOTE" CONTENT=";;;;C">
<STYLE TYPE="text/css">
<!--
@page { margin-right: 3.6cm; margin-top: 2.4cm; margin-bottom: 3.4cm }
P { margin-left: 2cm; text-indent: -2cm; margin-bottom: 0.21cm; direction: ltr; color: #000000; line-height: 0.49cm; text-align: justify; widows: 2; orphans: 2 }
P.western { font-family: "Times", serif; font-size: 12pt; so-language: de-DE }
P.cjk { font-family: "Times New Roman", serif; font-size: 12pt }
P.ctl { font-family: "Times", serif; font-size: 10pt; so-language: ar-SA }
P.sdfootnote-western { margin-left: 3cm; text-indent: -1cm; margin-bottom: 0cm; font-family: "Times", serif; font-size: 10pt; so-language: de-DE; line-height: 0.42cm; text-align: left }
P.sdfootnote-cjk { margin-left: 3cm; text-indent: -1cm; margin-bottom: 0cm; font-family: "Times New Roman", serif; font-size: 10pt; line-height: 0.42cm; text-align: left }
P.sdfootnote-ctl { margin-left: 3cm; text-indent: -1cm; margin-bottom: 0cm; font-family: "Times", serif; font-size: 10pt; so-language: ar-SA; line-height: 0.42cm; text-align: left }
A.sdfootnoteanc { font-size: 57% }
A.sdfootnotesym-western { font-family: "Times", serif; font-size: 10pt }
A.sdfootnotesym-cjk { font-size: 10pt }
A.sdfootnotesym-ctl { font-family: "Times", serif }
\t -->
\t </STYLE>
</HEAD>
<BODY LANG="en" TEXT="#000000" DIR="LTR">
<DIV TYPE=HEADER>
<P LANG="de-DE" ALIGN=CENTER STYLE="margin-bottom: 0.9cm"><SDFIELD TYPE=PAGE SUBTYPE=RANDOM FORMAT=PAGE>184</SDFIELD></P>
</DIV>
<P LANG="de-DE" ALIGN=RIGHT STYLE="margin-left: 0.3cm; text-indent: 0cm; margin-bottom: 0cm; line-height: 0.42cm">
<FONT FACE="Courier, monospace"><FONT SIZE=2><SPAN STYLE="font-weight: normal"> \t </SPAN></FONT></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US"><SPAN STYLE="font-weight: normal">19</SPAN></SPAN></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace"><FONT SIZE=2><SPAN LANG="en-US"> \t </SPAN></FONT></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">1 \t \t </SPAN></FONT><FONT FACE="Times, serif"><I><B><SPAN LANG="en-US">M</SPAN></B></I></FONT><SUP><FONT FACE="Times, serif"><FONT SIZE=2><I><B><SPAN LANG="en-US">r</SPAN></B></I></FONT></FONT></SUP><FONT FACE="Times, serif"><I><B><SPAN LANG="en-US">.
Bavoil</SPAN></B></I></FONT><FONT FACE="Courier, monospace"><FONT SIZE=2><SPAN LANG="en-US">
</SPAN></FONT></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">-
56 ans - clincailler au quai au</SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">[</SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">x</SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">]</SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">
fleur</SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">[</SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">s</SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">]</SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">
-</SPAN></I></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace"><FONT SIZE=2><SPAN LANG="en-US"><I> \t </I></SPAN></FONT></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">2 \t \t \t </SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">100
toujours l'ouïe</SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">°</SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">
dure</SPAN></I></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace"><FONT SIZE=2><SPAN LANG="en-US"> \t </SPAN></FONT></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">3 \t </SPAN></FONT><FONT FACE="Times, serif"><I><B><SPAN LANG="en-US"> \t 26
mai</SPAN></B></I></FONT><SUP><FONT FACE="Times, serif"><FONT SIZE=2><A CLASS="sdfootnoteanc" NAME="sdfootnote1anc" HREF="#sdfootnote1sym"><SUP>1</SUP></A></FONT></FONT></SUP><FONT FACE="Courier, monospace"><FONT SIZE=2><SPAN LANG="en-US"><I>
</I></SPAN></FONT></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">-
l'oreille droite jette du pus depuis 6 ou 8 mois - ce mois</SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">[</SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">-</SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">]</SPAN></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace"><FONT SIZE=2><SPAN LANG="en-US"><I> \t </I></SPAN></FONT></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">4 \t \t \t </SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">ci
encore plus - surdité de cette oreille depuis 2 mois</SPAN></I></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><I><SPAN LANG="en-US"> \t </SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">5 \t \t \t </SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">il
a eu un coup d'air en route - depuis 15 ans il a eu</SPAN></I></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><I><SPAN LANG="en-US"> \t </SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">6 \t \t \t </SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">l'oreille
dure alternativement l'une et l'autre -</SPAN></I></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><I><SPAN LANG="en-US"> \t </SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">7 \t \t \t </SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">maintenant
alternativement aussi</SPAN></I></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><I><SPAN LANG="en-US"> \t </SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">8 \t \t \t </SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">douleur
</SPAN></I></FONT><SUP><FONT FACE="Courier New, monospace"><SPAN LANG="en-US">┌</SPAN></FONT></SUP><FONT FACE="Times, serif"><I><SPAN LANG="en-US">dans</SPAN></I></FONT><SUP><FONT FACE="Courier New, monospace"><SPAN LANG="en-US">┐</SPAN></FONT></SUP><FONT FACE="Times, serif"><I><SPAN LANG="en-US">
sur l'os externe du coude il ne peut rien lever en</SPAN></I></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><I><SPAN LANG="en-US"> \t </SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">9 \t \t \t </SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">ayant
la main tournée en dedans -</SPAN></I></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><I><SPAN LANG="en-US"> \t </SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">10 \t \t \t </SPAN></FONT><FONT FACE="Times, serif"><I><SPAN LANG="en-US">dort,
mange bien</SPAN></I></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><I><SPAN LANG="en-US"> \t </SPAN></I></FONT><FONT FACE="Times, serif"><SPAN LANG="en-US">11 \t \t \t avant
6 semaines de l'onguent de tart.em. derrière l[']oreille </SPAN></FONT>
</P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><SPAN LANG="en-US"> \t 12 \t \t \t qui
lui poussait de boutons très dou-</SPAN></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><SPAN LANG="en-US"> \t 13 \t \t \t loureux
et causait un fièvre°</SPAN></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><SPAN LANG="en-US"> \t 14 \t \t \t n'entend
point du tout ma montre d'or à droit[e]</SPAN></FONT></P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><SPAN LANG="en-US"> \t 15 \t \t \t mais
à la gauche en 8 pouce de distance </SPAN></FONT>
</P>
<P LANG="de-DE" CLASS="western" STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><SPAN LANG="en-US"> \t 9 \t * \t \t Tinctura
Sulph. </SPAN></FONT><FONT FACE="Times, serif">1 globule C 30 en 14
C. 1 Spiritus vini</FONT></P>
The want-to file should look like this. Но имейте в виду, что теперь у меня есть теги со всей жирной и курсивной информацией. Речь идет только о разрывах строк и о том, где они.
Каждая строка должна начинаться с \ t \ d и заканчиваться разрывом строки. Но из-за этого дерьмового экспорта это выглядит как this.
Как объединить все строки, которые не начинаются с \ t \ d с первой, которая начинается с \ t \ d?
Я хотел использовать re.sub, но я думаю, что перепутал с регулярным выражением. Я попробовал что-то вроде этого. К сожалению, мое умение python не так хорошо, а Digital Humanist.
regex1 = r"(^\t\d.*?)\n(.*?)\n"
final = re.sub(regex1, "\2\1\n", f)
Не существует ли более быстрый способ удалить все ненужные \ n?
Большое спасибо за помощь. Любой код оценивается.
Я забыл упомянуть, что исходный текст имеет около 1000 страниц в .doc. И у нас больше файлов. Вот почему мы должны решать это автоматически. – fabsurd