I have written the following routine to clean an html raw code and extract the text.
It works, but the code is not very well written. Any ideas how to solve this faster and with fewer lines of code?
Thanks a lot for your help!
import re
def cleanhtml(raw_html):
cleanr = re.compile('<.*?>')
cleantext1 = re.sub(cleanr, ' ', raw_html)
cleanr = re.compile('&')
cleantext2 = re.sub(cleanr, '&', cleantext1 )
cleanr = re.compile('\n')
cleantext3 = re.sub(cleanr, ' ', cleantext2)
cleanr = re.compile(' ')
cleantext4 = re.sub(cleanr, ' ', cleantext3)
cleanr = re.compile('’')
cleantext5 = re.sub(cleanr, '\'', cleantext4)
cleanr = re.compile('…')
cleantext6 = re.sub(cleanr, '...', cleantext5)
cleanr = re.compile('‘')
cleantext7 = re.sub(cleanr, '\'', cleantext6)
cleanr = re.compile('”')
cleantext8 = re.sub(cleanr, '\'', cleantext7)
cleanr = re.compile('“')
cleantext9 = re.sub(cleanr, '\'', cleantext8)
cleanr = re.compile('–')
cleantext10 = re.sub(cleanr, '\'', cleantext9)
cleanr = re.compile('—')
cleantext11 = re.sub(cleanr, '\'', cleantext10)
cleanr = re.compile('&')
cleantext12 = re.sub(cleanr, '&', cleantext11)
cleanr = re.compile('ߪ')
cleantext13 = re.sub(cleanr, '...', cleantext12)
cleanr = re.compile(' ')
cleantext14 = re.sub(cleanr, ' ', cleantext13)
cleanr = re.compile('&')
cleantext15 = re.sub(cleanr, '&', cleantext14)
return cleantext15.strip()