Удаление сломанных HTML тегов в CSV - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть этот длинный CSV-файл, в котором текст был неправильно экспортирован, и многие строки разбиты на половину тега HTML, а также на середину предложения, разделенного на другие теги. Таким образом, файл выглядит совсем как этот кусок здесь:

abcdefghijk.</font></div>

<div><font face=""Arial Narrow"">&nbsp;</font><font face=""Arial Narrow""
color=""#262626"">abcdefghijk.abcdefghijk.abcdefghijk.abcdefghijk.abcdefghijk..</font></div>

<div><font face=""Arial Narrow"">&nbsp;</font><font face=""Arial Narrow""
color=""#262626"">abcdefghijk.abcdefghijk.abcdefghijk.abcdefghijk.abcdefghijk.abcdefghijk.abcdefghijk.abcdefghijk.abcdefghijk.abcdefghijk. 
<font face=""Arial Narrow""
color=""#262626"">cyvydvdyvd
<div><font face=""Arial Narrow"" color=""#333333"">T</font><font face=""Arial Narrow""
color=""#2F2F2F"">his is the worst part.</font></div>

Я очистил код с помощью Python:

import csv
import re

def cleanhtml(raw_html):
    cleanr = re.compile('<.*?>|&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});')
    cleantext = re.sub(cleanr, '', raw_html)
    return cleantext

, а затем очистил открытые скобки (происходит около 50 замен). ..)

def cleaner(filename):
    with open(filename) as f_in, open("test"+".csv", 'w') as f_out:
        for line in f_in:
            word_new7 = line.replace('<a', ' ')
        word_new7a = word_new7.replace('href', '<a href')
        word_new23 = word_new7a.replace('Narrow""', 'Narrow"">')
        word_new24 = word_new23.replace('face=', '<font face ')

        word_new25 = word_new24.replace('color=', '<color= ')
        word_new26 = word_new25.replace('style', 'style')
        word_new27 = word_new26.replace('face ""Times New Roman""', ' ')
        word_new28 = word_new27.replace('face ""Arial Narrow""', ' ')

        f_out.write(cleanhtml(word_new28))

Таким образом, результат полон мест, например, где слова просто ломаются и продолжаются в следующей строке.

Другая проблема заключается в том, что нумерация строк должна оставаться прежней, или, по крайней мере, ни одна строка не должна быть удалена, потому что этот файл является частью большой таблицы Excel.

Я пробовал это также с BS4, но это не сработало ..

Я надеюсь, что кто-нибудь может мне помочь С этим .. Также могут помочь небольшие предложения, я бы просто попробовал.

Спасибо и привет

...