2016-04-01 12 views
0

için anlayamıyorum kod this Udacity dersindenPython döngü davranış sorunu

kod replacin ait

> 
< 
" 
& 
test&test 

yerine bu çıktıyı veriyor kaçış dizileriyle bu özel karakterleri g.

Python'un escape_html işlevi için destek oluşturduğu gerçeğinin farkındayım, ancak neyi yanlış yaptığımı anlamak istiyorum. sonuca

s.replace(i,o) 

Set s:

+0

elle yapıyorsanız - Eğer yanlış bir şey yapıyorsun. Bu çözülmüş bir sorundur. Bir kütüphane kullan. –

cevap

3

Sen dönüş değeri str.replace() ait görmezden

s = s.replace(i,o) 

Karakter dizileri değişmez, bu nedenle tüm dize yöntemleri yeni dize nesneyi döndürmek .

Ardından, ('&','&amp;') değiştirmeyi üst tarafa taşımanız gerekir; aksi halde &gt;, &lt; ve &quot;'da &'u değiştirirsiniz.

Demo:

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

Awww .... F # @ k me !!!!!! Gerçekten aptalca bir hata yaptığımı biliyordum. – Piyush

+0

Dizelerin değişmez olduğunu ve bunun bekleneceği anlamına gelebilir. –