Python заменяет '\0' в строке на ноль

В настоящее время я сталкиваюсь со странной проблемой. Я хочу заменить '\0' в строках на 'null' и прочитать многие форумы и всегда видел один и тот же ответ:

text_it = "request on port 21 that begins with many '\0' characters, 
preventing the affected router"
text_it.replace('\0', 'null')

или же

text_it.replace('\x00', 'null')

Когда я сейчас печатаю строку, я получаю следующий результат:

"request on port 21 that begins with many '\0' characters, preventing the 
affected router"

Ничего не случилось.

Таким образом, я использовал этот метод, и он работал, но, похоже, слишком много усилий для такого небольшого изменения:

text_it = text_it.split('\0')
text_it = text_it[0] + 'null' + text_it[1]

Есть идеи, почему функция замены не работает?

2 ответа

Решение

В одной строке:

text_it = text_it.replace('\0', 'null').replace('\x00', 'null')

Строки являются неизменяемыми, поэтому их нельзя изменить с помощью replace() метод. Но этот метод возвращает ожидаемый результат, поэтому вы можете присвоить это возвращаемое значение text_it, Вот (простое) решение:

text_it = "request on port 21 that begins with many '\0' characters, preventing the affected router"
text_it = text_it.replace('\0', 'null')

print(text_it)
# request on port 21 that begins with many 'null' characters, preventing the affected router
Другие вопросы по тегам