tf.strings.unicode_transcode
Транскодировать входной текст из исходной кодировки в кодировку назначения.
tf.strings.unicode_transcode(
input,
input_encoding,
output_encoding,
errors='replace',
replacement_char=65533,
replace_control_characters=False,
name=None
)
Вход — это тензор строк любой формы. Выход — это тензор строк той же формы, содержащий транскодированные строки. Строки вывода всегда являются допустимыми строками Unicode. Если вход содержит позиции с недопустимой кодировкой, атрибут errors задаёт политику обработки этих позиций. Если используется политика обработки ошибок по умолчанию, недопустимый формат в выходе будет заменён на replacement_char. Если политика обработки ошибок — ignore, любые недопустимые позиции кодирования во входе будут пропущены и не включены в выходные данные. Если политика установлена на strict, любой недопустимый формат приведёт к ошибке InvalidArgument.
Эта операция может использоваться с output_encoding = input_encoding для обеспечения корректного форматирования ввода даже если он уже в нужной кодировке.
Если вход начинается с маркера порядка байтов, необходимого для определения кодировки (например, если кодировка UTF-16, а BOM указывает на порядок байтов — big-endian), то этот 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 | A Tensor типа string. Текст для обработки. Может иметь любую форму. |
input_encoding | A string. Кодировка текста входных строк. Это любая из кодировок, поддерживаемых алгоритмическими преобразователями ICU ucnv. Примеры: "UTF-16", "US ASCII", "UTF-8". |
output_encoding | A string из: "UTF-8", "UTF-16-BE", "UTF-32-BE". Кодировка Unicode для использования в выводе. Должна быть одной из "UTF-8", "UTF-16-BE", "UTF-32-BE". Многобайтовые кодировки будут big-endian. |
errors | Необязательный string из: "strict", "replace", "ignore". По умолчанию "replace". Политика обработки ошибок при обнаружении недопустимого форматирования во вводе. Значение 'strict' заставит операцию генерировать ошибку InvalidArgument при любом недопустимом формате ввода. Значение 'replace' (по умолчанию) заставит операцию заменить любой недопустимый формат ввода на replacement_char код символа. Значение 'ignore' заставит операцию пропустить любой недопустимый формат ввода и не выводить соответствующий символ. |
replacement_char | Необязательный int. По умолчанию 65533. Код символа замены, используемый вместо любого недопустимого форматирования ввода, когда errors='replace'. Может использоваться любой допустимый код символа Unicode. Значение по умолчанию — символ замены Unicode по умолчанию — 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 | Имя операции (необязательно). |
| Возвращаемые значения | |
|---|---|
A Tensor типа string. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/strings/unicode_transcode