Почему вместо \\x не появляется \x
Я хочу заменить у тензора символ \\x на \x
import tensorflow as tf
rank_1_tensor = tf.constant([b"{{g|attr('\\x5f\\x5fclass\\x5f\\x5f')}}"])
stripped=tf.strings.regex_replace(rank_1_tensor, b'\\\\x', b'\\x')
Но в итоге stripped оказывается равен - b"{{g|attr('5f5fclass5f5f')}}"
А мне нужно, чтобы stripped был равен b"{{g|attr('\x5f\x5fclass\x5f\x5f')}}"
Как верно реализовать такое?
UPD Пример исходной байтовой строки
Она получается путём чтения функцией text_dataset_from_directory, затем вывожу на экран получившееся
raw_train_ds = preprocessing.text_dataset_from_directory(
train_dir,
batch_size=batch_size,
validation_split=0.2,
subset='training',
shuffle=0, # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
seed=seed)
for text_batch, label_batch in raw_train_ds.take(1):
for i in range(batch_size):#10):
print("Packet: ", text_batch.numpy()[i][:100], '...')
print("Label:", label_batch.numpy()[i])
но почему-то данные два раза экранируются, пример вывода
Packet: b"{{g['__class__']['__mro__'][1]['__subclasses__']()[428]('antthing.txt', 'w').write('Hello here !')}}" ...
Label: 0
Packet: b"{{g['\\x5f\\x5fclass\\x5f\\x5f']['\\x5f\\x5fbase\\x5f\\x5f']}}"
Не решив эту пробему, думал решить её нормализацией, путем замены двойного слэша на одиночный (чтобы превратился в байт), но и это не сработало (описал в начале вопроса)