«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как удалить непечатаемые символы из строк в Python?

Как удалить непечатаемые символы из строк в Python?

Опубликовано 9 ноября 2024 г.
Просматривать:733

How to Remove Non-Printable Characters from Strings in Python?

Удаление непечатаемых символов из строки в Python

В отличие от Perl, в Python отсутствуют классы регулярных выражений POSIX, что затрудняет обнаружение и удалять непечатаемые символы с помощью регулярных выражений.

Итак, как этого можно добиться в Python?

Один из подходов — использовать модуль unicodedata. Функция unicodedata.category классифицирует символы Юникода по различным категориям. Например, символы, отнесенные к категории Cc (управляющие), представляют собой непечатаемые символы.

Используя эти знания, вы можете создать собственный класс символов, который соответствует всем управляющим символам:

import unicodedata
import re
import sys

all_chars = (chr(i) for i in range(sys.maxunicode))
categories = {'Cc'}
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories)

control_char_re = re.compile('[%s]' % re.escape(control_chars))

def remove_control_chars(s):
    return control_char_re.sub('', s)

Эта функция эффективно удаляет все непечатаемые символы ASCII из входной строки.

В качестве альтернативы вы можете использовать встроенный в Python метод string.printable для фильтрации непечатаемых символов. Однако этот метод исключает символы Юникода, поэтому он может подходить не для всех случаев использования.

Чтобы обрабатывать символы Юникода, вы можете расширить класс символов в регулярном выражении следующим образом:

control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))

Этот расширенный класс символов включает в себя базовые управляющие символы, а также общие не -печатаемые символы Юникода.

Изменив функцию Remove_control_chars соответствующим образом, вы можете успешно обрабатывать непечатаемые символы как ASCII, так и Юникода.

Заявление о выпуске Эта статья перепечатана по адресу: 1729551315. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3