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