小编dyl*_*nkb的帖子

列表中元素的顺序是否会导致for循环中的错误?

我正在玩一个简单的脚本来逃避某些HTML字符,并且遇到了一个似乎是由我列表中的元素顺序引起的错误escape_pairs.我不是在循环中修改列表,所以我想不出我在这里忽略的任何Python /编程原则.

escape_pairs = [(">", "&gt;"),("<","&lt;"),('"',"&quot;"),("&","&amp;")]

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)

回报

&amp;gt;
&amp;lt;
&amp;quot;
&amp;
Run Code Online (Sandbox Code Playgroud)

但是当我切换escape_pairs列表中元素的顺序时,bug就消失了

>>> escape_pairsMod = [("&","&amp;"),("<","&lt;"),('"',"&quot;"),(">", "&gt;")]

&gt;
&lt;
&quot;
&amp;
Run Code Online (Sandbox Code Playgroud)

python loops replace tuples

5
推荐指数
1
解决办法
89
查看次数

标签 统计

loops ×1

python ×1

replace ×1

tuples ×1