我想用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']
問題是與其有時返回\'
和有時\\'
的'
字符。
我認爲它來自字典中的最後一項,"\\":"\\\\"
,但我不明白爲什麼它在每次運行時不會被解釋爲相同。
也許你可以使它更明顯_exactly_你的修改是什麼以及爲什麼你認爲它解決了問題,即使你不知道是什麼導致舊的失敗?附:字典沒有訂單,這意味着替換正在以隨機順序進行評估...... – Ben
我認爲你只是回答了這個問題......我認爲for是有序的,但它似乎是有序的,因此如果替換起初是在第一次兩次後結果不同!!! – user1998000
訂購'for'。這是字典是不是(正如我在我的答案解釋!) – rlms