2016-04-01 9 views
0

のために私は理解できませんthis UdacityレッスンはPythonのループ動作の問題

からのコードのコードは、この出力に

> 
< 
" 
& 
test&test 

の代わりreplacinを与えていますgこれらの特殊文字をエスケープシーケンスで置き換えます。

私は、Pythonにescape_html関数のサポートが組み込まれていることを認識していますが、何が間違っているのか理解したいのですが?結果に

s.replace(i,o) 

設定s

+0

手動でこれをやっている場合 - あなたは何か間違ったことをやっています。これは解決された問題です。ライブラリを使用する。 –

答えて

3

あなたは戻り値str.replace()無視している

s = s.replace(i,o) 

文字列は不変ですが、そのすべての文字列メソッドは新しい文字列オブジェクトを返します。

次に、交換先の('&','&amp;')を先頭に移動する必要があります。そうでない場合は、&gt;&lt;、および&quot;&を置き換えます。

デモ:

>>> 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#@ me私!!!!!!私は本当にばかげた誤りをしていることを知っていた。 – Piyush

+0

文字列が不変であり、それが期待されることは価値があるかもしれません。 –