tf.strings.unicode_transcode
Транскодирует входной текст из исходной кодировки в целевую кодировку.
tf.strings.unicode_transcode(
input, input_encoding, output_encoding, errors='replace',
replacement_char=65533, replace_control_characters=False, name=None
)
Вход — это тензор строк любой формы. Выход — это тензор строк той же формы, содержащий транскодированные строки. Выходные строки всегда являются допустимыми строками Юникода. Если вход содержит недопустимые позиции кодирования, атрибут errors задаёт политику обработки таких позиций. Если используется политика обработки ошибок по умолчанию, недопустимый формат в выводе будет заменён символом replacement_char. Если политика обработки ошибок установлена в ignore, все недопустимые позиции кодирования во входе будут пропущены и не включены в вывод. Если она установлена в strict, любой недопустимый формат приведёт к ошибке InvalidArgument.
Данная операция может использоваться с output_encoding = input_encoding для обеспечения правильного форматирования входов даже если они уже в требуемой кодировке.
Если вход начинается с управляющего символа порядка байтов (BOM), необходимого для определения кодировки (например, если кодировка UTF-16, а BOM указывает на порядок байт «большая эндианность»), то этот BOM будет потреблён и не будет включён в выходные данные. Если кодировка входа отмечена явным порядком байт (например, UTF-16-BE), то BOM интерпретируется как незаменяемый пробел и сохраняется в выходе (включая всегда для UTF-8).
Конечный результат заключается в том, что если вход помечен явным порядком байт, то транскодирование будет верным для всех кодовых точек в источнике. Если он не помечен явным порядком байт, BOM не считается частью самой строки, а как метаданные, и поэтому не сохраняется в выходе.
Примеры:
tf.strings.unicode_transcode(["Hello", "TensorFlow", "2.x"], "UTF-8", "UTF-16-BE")
<tf.Tensor: shape=(3,), dtype=string, numpy=
array([b'\x00H\x00e\x00l\x00l\x00o',
b'\x00T\x00e\x00n\x00s\x00o\x00r\x00F\x00l\x00o\x00w',
b'\x002\x00.\x00x'], dtype=object)>
tf.strings.unicode_transcode(["A", "B", "C"], "US ASCII", "UTF-8").numpy()
array([b'A', b'B', b'C'], dtype=object)
| Аргументы | |
|---|---|
input | Tensor типа string. Текст для обработки. Может иметь любую форму. |
input_encoding | string. Кодировка текста входных строк. Это любая из кодировок, поддерживаемых алгоритмическими преобразователями ICU ucnv. Примеры: "UTF-16", "US ASCII", "UTF-8". |
output_encoding | string из: "UTF-8", "UTF-16-BE", "UTF-32-BE". Кодировка Юникода для использования в выходе. Должна быть одной из "UTF-8", "UTF-16-BE", "UTF-32-BE". Многобайтовые кодировки будут иметь порядок байт «большая эндианность». |
errors | Необязательный string из: "strict", "replace", "ignore". По умолчанию "replace". Политика обработки ошибок при обнаружении недопустимого форматирования во входе. Значение 'strict' заставит операцию генерировать ошибку InvalidArgument при любом недопустимом форматировании ввода. Значение 'replace' (по умолчанию) заставит операцию заменить любой недопустимый формат ввода кодовой точкой replacement_char. Значение 'ignore' заставит операцию пропустить любой недопустимый формат ввода и не генерировать соответствующий выходной символ. |
replacement_char | Необязательный int. По умолчанию 65533. Кодовая точка символа замены, используемая вместо любого недопустимого форматирования ввода при errors='replace'. Можно использовать любую допустимую кодовую точку Юникода. Значение по умолчанию — стандартный символ замены Юникода — 0xFFFD или U+65533.) Обратите внимание, что для UTF-8 передача символа замены, выразимого в 1 байте, такого как ' ', сохранит выравнивание строки с исходником, так как недопустимые байты будут заменены символом замены из 1 байта. Для UTF-16-BE и UTF-16-LE любой символ замены из 1 или 2 байтов сохранит выравнивание байтов с исходником. |
replace_control_characters | Необязательный bool. По умолчанию False. Нужно ли заменять управляющие символы C0 (00-1F) символом replacement_char. По умолчанию false. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Tensor типа string. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/strings/unicode_transcode