我很难理解这个for循环。我是python的新手,所以我不明白到底发生了什么。该代码用于html转义。
我的问题是:for循环如何执行? (i,o)为什么(.........)这是怎么回事?怎么知道有一个&字符串s中的符号?
def escape_html(s):
for(i,o) in (("&", "&"),(">",">"),('<','<'),('"',""")):
s=s.replace(i,o)
return s
print escape_html("hello&> this is do\"ge")
答案 0 :(得分:2)
首先,您需要了解元组解包。
(a, b) = ("foo", 1)
此表达式将"foo"
分配给a
和1
b
。可以在循环内部使用相同的语法来解压缩正在循环的迭代器对象的元素。
因此,对于循环的每个元素,您要解压缩嵌套元组的元素(可迭代)。
def escape_html(s):
for (i,o) in (("&", "&"),(">",">"),('<','<'),('"',""")):
s = s.replace(i,o)
return s
展开循环会给你这样的东西:
def escape_html(s):
s = s.replace("&", "&")
s = s.replace(">",">")
s = s.replace('<','<')
s = s.replace('"',""")
return s
答案 1 :(得分:1)
这有帮助吗?
>>> for(i,o) in (("&", "&"),(">",">"),('<','<'),('"',""")):
... print "i: {}, o: {}".format(i,o)
...
i: &, o: &
i: >, o: >
i: <, o: <
i: ", o: "
在循环的每次迭代期间,选择迭代器的一个元素;所以对于第一次迭代,该元素是元组("&", "&")
。然后将该元组解压缩到变量i
和o
。
答案 2 :(得分:1)
语法
for x, y in z:
表示&#34;在z
循环&#34;的每次迭代中,将可迭代x
中的2元组解包为两个变量y
和for
。
这不一定是True
;您正在考虑while
循环:
while True:
设计用于迭代直到满足某个条件,而for
循环用于处理可迭代中的项。
它并不知道对中的任何首字符都在参数s
中,但replace
不会抛出如果不是,则会出错。