In [27]:
from bs4 import BeautifulSoup
import re

In [28]:
def markdown(html, regexes):
    # - html is the HTML documents to be marked
    # - regexes is a dictionary of labels and regular expressions.
    for classname, regex in regexes.items():        
        pattern = re.compile(regex)
        soup = BeautifulSoup(html, 'html5lib')
        for string in soup.strings:
            print(repr(string))
            if re.search(pattern, repr(string)):
                # class is a reserved word in Python, so we need to do some hacking here in order to enter it as a parameter.
                string.wrap(soup.new_tag('div', **{'class':classname}))
    return soup.prettify()

In [3]:
html = '<html><meta charset="UTF-8"/>Secretaria Municipal do Habitat<p class="MsoTitle">Secretaria Municipal de Habitação</p> \
        <p align="center" class="MsoNormal"><b>Extrato de Instrumento</b></p><p class="MsoNormal"> \
        <u>PROCESSO</u>:16/001. 083/2010</p><p class="MsoNormal"><u>TERMO ADITIVO</u>:003/2013 ao Contrato 034/2012</p> \
        <p class="MsoNormal"><u>DATA:</u>30/01/2013</p><p class="MsoNormal"><u>PARTES:</u> \
        SMH/ CONCREMAT ENGENHARIA E TECNOLOGIA S/A</p><p class="MsoNormal"><u>OBJETO:</u> \
        Readequação das planilhas orçamentárias, sem acréscimo de valor, em 6,61% (seis virgula sessenta e um por cento), \
        seguindo as informações da fiscalização de fls. 1061/1062, nos termos do art. 65, I, b. e §1º da Lei 8.666/93.</p> \
        <p class="MsoNormal">Readequação do cronograma físico-financeiro, de acordo com a planilha acostada as fls. 1060.</p> \
        <p class="MsoBodyTextIndent"><u>FUNDAMENTO:</u>art.65, I , “b” e §1º da Lei 8.666/93.</p></html>'

In [29]:
regexes = {'address':'Instrumento'}
return_html = markdown(html, regexes)


'Secretaria Municipal do Habitat'
'Secretaria Municipal de Habitação'
'         '
'Extrato de Instrumento'
'         '
'PROCESSO'
':16/001. 083/2010'
'TERMO ADITIVO'
':003/2013 ao Contrato 034/2012'
'         '
'DATA:'
'30/01/2013'
'PARTES:'
'         SMH/ CONCREMAT ENGENHARIA E TECNOLOGIA S/A'
'OBJETO:'
'         Readequação das planilhas orçamentárias, sem acréscimo de valor, em 6,61% (seis virgula sessenta e um por cento),         seguindo as informações da fiscalização de fls. 1061/1062, nos termos do art. 65, I, b. e §1º da Lei 8.666/93.'
'         '
'Readequação do cronograma físico-financeiro, de acordo com a planilha acostada as fls. 1060.'
'         '
'FUNDAMENTO:'
'art.65, I , “b” e §1º da Lei 8.666/93.'

In [30]:
print(return_html)


<html>
 <head>
  <meta charset="utf-8"/>
 </head>
 <body>
  Secretaria Municipal do Habitat
  <p class="MsoTitle">
   Secretaria Municipal de Habitação
  </p>
  <p align="center" class="MsoNormal">
   <b>
    <div class="address">
     Extrato de Instrumento
    </div>
   </b>
  </p>
  <p class="MsoNormal">
   <u>
    PROCESSO
   </u>
   :16/001. 083/2010
  </p>
  <p class="MsoNormal">
   <u>
    TERMO ADITIVO
   </u>
   :003/2013 ao Contrato 034/2012
  </p>
  <p class="MsoNormal">
   <u>
    DATA:
   </u>
   30/01/2013
  </p>
  <p class="MsoNormal">
   <u>
    PARTES:
   </u>
   SMH/ CONCREMAT ENGENHARIA E TECNOLOGIA S/A
  </p>
  <p class="MsoNormal">
   <u>
    OBJETO:
   </u>
   Readequação das planilhas orçamentárias, sem acréscimo de valor, em 6,61% (seis virgula sessenta e um por cento),         seguindo as informações da fiscalização de fls. 1061/1062, nos termos do art. 65, I, b. e §1º da Lei 8.666/93.
  </p>
  <p class="MsoNormal">
   Readequação do cronograma físico-financeiro, de acordo com a planilha acostada as fls. 1060.
  </p>
  <p class="MsoBodyTextIndent">
   <u>
    FUNDAMENTO:
   </u>
   art.65, I , “b” e §1º da Lei 8.666/93.
  </p>
 </body>
</html>

In [31]:
import pickle

In [32]:
favorite_color = { "lion": "yellow", "kitty": "red" }
pickle.dump( favorite_color, open( "save.p", "wb" ) )

In [ ]: