Удалите html форматирование ">" из текстового файла с помощью Python csv.reader - PullRequest
3 голосов
/ 28 октября 2009

У меня есть текстовый файл с; используется в качестве разделителя. Проблема в том, что в нем есть HTML-форматирование текста, например > Очевидно, что; в этом возникают проблемы. Текстовый файл большой, и у меня нет списка этих HTML-строк, то есть есть много разных примеров, таких как $amp;. Как я могу удалить их все, используя python. Файл представляет собой список имен, адресов, номера телефона и еще несколько полей. Я ищу модуль crap.html.remove (textfile)

Ответы [ 3 ]

6 голосов
/ 28 октября 2009

Возможно, самый быстрый способ - использовать недокументированный, но пока стабильный метод unescape в HTMLParser :

import HTMLParser
s= HTMLParser.HTMLParser().unescape(s)

Обратите внимание, что при этом обязательно будет выведена строка Unicode, поэтому, если у вас есть байты, отличные от ASCII, вам сначала потребуется s.decode(encoding).

3 голосов
/ 28 октября 2009

Посмотрите код здесь :

import re, htmlentitydefs

##
# Removes HTML or XML character references and entities from a text string.
#
# @param text The HTML (or XML) source text.
# @return The plain text, as a Unicode string, if necessary.

def unescape(text):
    def fixup(m):
        text = m.group(0)
        if text[:2] == "&#":
            # character reference
            try:
                if text[:3] == "&#x":
                    return unichr(int(text[3:-1], 16))
                else:
                    return unichr(int(text[2:-1]))
            except (ValueError, OverflowError):
                pass
        else:
            # named entity
            try:
                text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
            except KeyError:
                pass
        return text # leave as is
    return re.sub("&#?\w+;", fixup, text)

Конечно, это касается только сущностей HTML. У вас могут быть другие точки с запятой в тексте, которые мешают вашему анализатору CSV. Но я думаю, вы уже знаете, что ...

ОБНОВЛЕНИЕ : добавлен улов для возможного OverflowError.

1 голос
/ 02 января 2010

В большинстве систем Unix (включая Mac OS X) вы можете перекодировать входной текстовый файл с помощью:

recode html.. file_with_html.txt

Это заменяет & gt; ">" и т. д.

Вы можете вызвать это, например, через модуль подпроцесса Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...