我很难理解这个for循环。我是python的新手,所以我不明白这里到底发生了什么。该代码用于html转义。

我的问题是:for循环如何执行?为什么(...,)中的for(i,o)为何如此?它怎么知道字符串s中有一个&符号?

def escape_html(s):
  for(i,o) in (("&", "&amp;"),(">","&gt;"),('<','&lt;'),('"',"&quot;")):
    s=s.replace(i,o)
return s



print escape_html("hello&> this is do\"ge")

最佳答案

首先,您需要了解元组拆包。

(a, b) = ("foo", 1)


此表达式将"foo"分配给a1 b。循环内部可以使用相同的语法来解压缩循环中的迭代器对象的元素。

因此,对于循环的每个元素,您都在拆包嵌套元组的元素(可迭代)。

def escape_html(s):
  for (i,o) in (("&", "&amp;"),(">","&gt;"),('<','&lt;'),('"',"&quot;")):
    s = s.replace(i,o)
  return s


展开循环将为您提供以下内容:

def escape_html(s):
  s = s.replace("&", "&amp;")
  s = s.replace(">","&gt;")
  s = s.replace('<','&lt;')
  s = s.replace('"',"&quot;")
  return s

关于python - 带有元组的Python for循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21193847/

10-12 14:13
查看更多