У меня есть две функции: одна, которая очищает входной текст, и тот, который проверяет, является ли cleantext шестнадцатеричным. При передаче функции очистки строка всех пробелов, она удаляет пробелы, оставляя нулевую строку.Почему проверка пустой строки на string.hexdigits() возвращает допустимый?
То, что я не понимаю, - это то, почему string.hexdigits() не перекрывает эту пустую строку, и пусть это пройдет как действительный hex.
def testHex(ciphertext):
cleancipher = cleanHex(ciphertext)
if all(h in string.hexdigits for h in cleancipher):
print('String is valid hex.')
else:
print('String is not valid hex.')
def cleanHex(ciphertext):
return(ciphertext.replace(' ', '').replace('0x', '').replace(':', '').replace('\\x', '').strip())
'почему string.hexdigits() не barf' - на самом деле это так ...' string.hexdigits' - это строка, вы не можете назвать ее и получить ошибку для попытки. –
Люди жестоки с downvotes на SO, хотя это не в поиске. Заключительный вопрос сейчас. ** Редактировать: ** Не понял, что я не смог удалить с ответом на борту. Думаю, держись. Благодарим сообщество. – cremefraiche
@StefanPochmann Я ожидаю, что это будет не для того, чтобы не быть hexdigit, а не для того, чтобы не быть строкой. Представленный ответ прояснил это для меня. – cremefraiche