特殊文字を HTML エンティティに置き換えようとしていますが、結果は同じ入力でランダムになり、その理由がわかりません。
コードは次のとおりです。
def secure(text):
hsconvert = {"\'": "\\'", "\"": "\\\"", "¢": "¢", "©": "©", "÷": "÷", ">": ">", "<": "<", "µ": "µ", "·": "·", "¶": "¶", "±": "±", "€": "€", "£": "£", "®": "®", "§": "§", "™": "™", "¥": "¥", "á": "á", "Á": "Á", "à": "à", "À": "À", "â": "â", "Â": "Â", "å": "å", "Å": "Å", "ã": "ã", "Ã": "Ã", "ä": "ä", "Ä": "Ä", "æ": "æ", "Æ": "Æ", "ç": "ç", "Ç": "Ç", "é": "é", "É": "É", "è": "è", "È": "È", "ê": "ê", "Ê": "Ê", "ë": "ë", "Ë": "Ë", "í": "í", "Í": "Í", "ì": "ì", "Ì": "Ì", "î": "î", "Î": "Î", "ï": "ï", "Ï": "Ï", "ñ": "ñ", "Ñ": "Ñ", "ó": "ó", "Ó": "Ó", "ò": "ò", "Ò": "Ò", "ô": "ô", "Ô": "Ô", "ø": "ø", "Ø": "Ø", "õ": "õ", "Õ": "Õ", "ö": "ö", "Ö": "Ö", "ß": "ß", "ú": "ú", "Ú": "Ú", "ù": "ù", "Ù": "Ù", "û": "û", "Û": "Û", "ü": "ü", "Ü": "Ü", "ÿ": "ÿ", "\\":"\\\\"};
for i, j in hsconvert.items():
text = text.replace(i, j)
return text
print(secure("La Vie d'Adèle, chapitres 1 & 2"))
コンソール出力は次のとおりです。
>>> ================================ RESTART ================================
>>>
La Vie d\'Adèle, chapitres 1 & 2
['TV Movie', 'Video Game', 'TV Episode', 'TV Series', 'TV Series ', 'Short', 'TV Mini-Series']
>>> ================================ RESTART ================================
>>>
La Vie d\\'Adèle, chapitres 1 & 2
['TV Movie', 'Video Game', 'TV Episode', 'TV Series', 'TV Series ', 'Short', 'TV Mini-Series']
問題は、として返されることもあれば として'
返されることもある文字にあります。\'
\\'
辞書の最後の項目から来ていると思いますが、"\\":"\\\\"
実行ごとに同じように解釈されない理由がわかりません。