我正在玩一个简单的脚本来逃避某些HTML字符,并且遇到了一个似乎是由我列表中的元素顺序引起的错误escape_pairs.我不是在循环中修改列表,所以我想不出我在这里忽略的任何Python /编程原则.
escape_pairs = [(">", ">"),("<","<"),('"',"""),("&","&")]
def escape_html(s):
for (i,o) in escape_pairs:
s = s.replace(i,o)
return s
print escape_html(">")
print escape_html("<")
print escape_html('"')
print escape_html("&")
Run Code Online (Sandbox Code Playgroud)
回报
&gt;
&lt;
&quot;
&
Run Code Online (Sandbox Code Playgroud)
但是当我切换escape_pairs列表中元素的顺序时,bug就消失了
>>> escape_pairsMod = [("&","&"),("<","<"),('"',"""),(">", ">")]
>
<
"
&
Run Code Online (Sandbox Code Playgroud)