Как работать с unicode в Python

Я пытаюсь очистить весь HTML из строки, поэтому конечный вывод – текстовый файл. У меня есть некоторые исследования по различным «конвертерам», и я начинаю склоняться к созданию своего собственного словаря для сущностей и символов и выполнения замены в строке. Я рассматриваю это, потому что хочу автоматизировать процесс, и есть много изменчивости в качестве базового html. Чтобы начать сравнивать скорость моего решения и одну из альтернатив, например pyparsing, я решил протестировать замену \ xa0 с помощью замены метода string. Я получаю

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128) 

Фактическая строка кода была

 s=unicodestring.replace('\xa0','') 

Во всяком случае, я решил, что мне нужно предисловие с r, поэтому я запустил эту строку кода:

 s=unicodestring.replace(r'\xa0','') 

Он работает без ошибок, но я, когда смотрю на кусочек s, вижу, что \ xaO все еще там

6 Solutions collect form web for “Как работать с unicode в Python”

может быть, вы должны делать

 s=unicodestring.replace(u'\xa0',u'') 
 s=unicodestring.replace('\xa0','') 

.. пытается создать символ юникода \xa0 , что недопустимо в sctring ASCII (тип строки по умолчанию в Python до версии 3.x)

Причина r'\xa0' не была ошибкой, потому что в исходной строке escape-последовательности не влияют. Вместо того, чтобы пытаться кодировать \xa0 в символ юникода, он видел строку как «буквальную обратную косую черту», ​​«буквальный х» и т. Д.

То же самое:

 >>> r'\xa0' '\\xa0' >>> '\\xa0' '\\xa0' 

Это что-то разрешено в Python v3, поскольку тип строки по умолчанию – unicode, поэтому вы можете просто сделать ..

 >>> '\xa0' '\xa0' 

Я пытаюсь очистить весь HTML из строки, так что конечный вывод – это текстовый файл

Я бы настоятельно рекомендовал BeautifulSoup для этого. Написание инструмента для очистки HTML затруднено (учитывая, насколько ужасен большинство HTML), а BeautifulSoup отлично справляется с анализом HTML и работой с Unicode.

 >>> from BeautifulSoup import BeautifulSoup >>> soup = BeautifulSoup("<html><body><h1>Hi</h1></body></html>") >>> print soup.prettify() <html> <body> <h1> Hi </h1> </body> </html> 

Посмотрите стандартную библиотеку кодеков , в частности методы кодирования и декодирования, представленные в базовом классе Codec.

Здесь также есть хорошая статья, которая объединяет все это.

Вместо этого лучше использовать стандартные функции python.

Например:

 string = unicode('Hello, \xa0World', 'utf-8', 'replace') 

или

 string = unicode('Hello, \xa0World', 'utf-8', 'ignore') 

где replace заменит \xa0 на \\xa0 .

Но если \xa0 действительно не имеет смысла для вас, и вы хотите его удалить, используйте ignore .

Просто обратите внимание на очистку HTML. Это очень сложно, поскольку

 < body > 

Является допустимым способом написания HTML. Просто фью.

Вы можете преобразовать его в unicode таким образом:

 print u'Hello, \xa0World' # print Hello, World 
  • Существует ли определенный диапазон кодов Unicode, которые можно проверить для emojis?
  • Запись массива unicode numpy в текстовый файл
  • Как преобразовать символы xxY в UTF-8 в Python?
  • Функция print () Python 3 с символами фарси / арабский
  • json.loads () дает исключение, что он ожидает значение, похоже, что значение есть
  • Как заменить символы Unicode символами ascii в Python (заданный perl-скрипт)?
  • UnicodeEncodeError при записи в файл
  • python unicode обрабатывает различия между print и sys.stdout.write
  •  
    Interesting Posts for Van-Lav

    Scrapy – внешний запрос для обработки на основе регулярного выражения

    Параметры запроса тестирования в Django («+» ведет себя по-разному)

    Как использовать модуль «json» для чтения в одном объекте JSON за раз?

    Может кто-нибудь объяснить тупик буфера трубы?

    Существуют ли ограничения на использование string.lstrip () в python?

    Утилита Python устраняет необходимость в модульных тестах?

    Многопроцессорность Python, приводящая ко многим зомби-процессам

    Является ли совпадение маршрута в текстовом режиме коммутативным?

    Разница между numpy.genfromtxt и numpy.loadtxt и распаковка

    Python API Диска Google – список всего дерева файлов дисков

    Автоматическое создание каталогов с выходом файла

    Ошибка при использовании MySQL Connector / Python с Django 1.11

    Сериализация экземпляра объекта python для JSON

    показать изображения в шаблонах Django

    Как сохранить литералы при переходе с Python на C ++ и обратно на Python

    Python - лучший язык программирования в мире.