Я нашел это в исходном коде Cheetah ( здесь )
htmlCodes = [
['&', '&'],
['<', '<'],
['>', '>'],
['"', '"'],
]
htmlCodesReversed = htmlCodes[:]
htmlCodesReversed.reverse()
def htmlDecode(s, codes=htmlCodesReversed):
""" Returns the ASCII decoded version of the given HTML string. This does
NOT remove normal HTML tags like <p>. It is the inverse of htmlEncode()."""
for code in codes:
s = s.replace(code[1], code[0])
return s
не уверен, почему они переворачивают список,
Я думаю, что это связано с тем, как они кодируют, поэтому, возможно, вам не нужно обращать вспять.
Кроме того, на вашем месте я бы изменил htmlCodes на список кортежей, а не на список списков ...
это происходит в моей библиотеке, хотя:)
Я заметил, что ваш заголовок также попросил кодировать, так что вот функция кодирования Гепарда.
def htmlEncode(s, codes=htmlCodes):
""" Returns the HTML encoded version of the given string. This is useful to
display a plain ASCII text string on a web page."""
for code in codes:
s = s.replace(code[0], code[1])
return s