text="\xe2\x80\x94"
print re.sub(r'(\\(?<=\\)x[a-z0-9]{2})+',"replacement_text",text)
выход —
питон регулярное выражение: как удалить шестигранные символы из строки дец
, как я могу справиться с шестигранной десятичных знаков в этой ситуации?
text="\xe2\x80\x94"
print re.sub(r'(\\(?<=\\)x[a-z0-9]{2})+',"replacement_text",text)
выход —
питон регулярное выражение: как удалить шестигранные символы из строки дец
, как я могу справиться с шестигранной десятичных знаков в этой ситуации?
Ваш вход не есть обратная косая черта. Он имеет 3 байта, UTF-8 кодировку для U+2014 EM DASH характера:
>>> text = "\xe2\x80\x94"
>>> len(text)
3
>>> text[0]
'\xe2'
>>> text.decode('utf8')
u'\u2014'
>>> print text.decode('utf8')
—
Вы либо должны соответствовать этим UTF-8 байт непосредственно или расшифровывает из UTF-8 в unicode
и соответствовать элемент кода. Последнее предпочтительнее; всегда старайтесь иметь дело с текстом как Unicode, чтобы упростить, сколько символов вам нужно преобразовать за раз.
отметить также, что repr()
выхода Python (который используется impliciltly когда вторя в интерактивном интерпретаторе или при печати списков, dicts или других контейнеров) использует \xhh
управляющих последовательности для представления любого непечатаемую характера. Для строк UTF-8, которые включают что-либо вне диапазона ASCII. Вы можете просто заменить что-либо за пределами этого диапазона с:
re.sub(r'[\x80-\xff]+', "replacement_text", text)
Примите во внимание, что это будет соответствовать несколько UTF-8 кодировке символов в строке и заменить их вместе как группа!
Ваш вход находится в шестнадцатеричном виде, а не в фактическом «\ xe2 \ x80 \ x94». \ x - это просто способ сказать, что следующие символы следует интерпретировать в шестнадцатеричном виде.
Об этом сообщается в this post.
Ваш вход не имеет * есть * обратная косая черта. Он имеет 3 байта, кодировку UTF-8 для U + 2014 EM DASH. –
Чувак, 'текст' ** не ** буквально' \ xe2 \ x80 \ x94'. '\ x' - это специальный символ, который сообщает Python, что следующие два символа будут интерпретироваться как шестнадцатеричные цифры для некоторого символьного кода. – freakish