非常に手っ取り早い入力サニタイズを行う必要があり、基本的にすべての_<, >
_を_<, >
_に変換したいと思います。
文字列を複数回繰り返すことなく、'<script></script>'.replace('<', '<').replace('>', '>')
と同じ結果を達成したいと思います。 maketrans
と_str.translate
_(つまり、 http://www.tutorialspoint.com/python/string_translate.htm )を組み合わせて知っていますが、これは1文字からしか変換されません別の文字に。言い換えれば、次のようなことはできません。
_inList = '<>'
outList = ['<', '>']
transform = maketrans(inList, outList)
_
この変換を1回の反復で実行できるbuiltin
関数はありますか?
外部モジュールではなく、builtin
機能を使用したいと思います。私はすでにBleach
について知っています。
cgi.escape()
を使用できます
import cgi
inlist = '<>'
transform = cgi.escape(inlist)
print transform
出力:
<>
https://docs.python.org/2/library/cgi.html#cgi.escape
cgi.escape(s [、quote])文字列sの文字 '&'、 '<'、および '>'をHTMLセーフシーケンスに変換します。 HTMLでそのような文字を含む可能性のあるテキストを表示する必要がある場合は、これを使用します。オプションのフラグ引用符がtrueの場合、引用符文字( ")も変換されます。これは、のように二重引用符で区切られたHTML属性値に含めるのに役立ちます。一重引用符は変換されないことに注意してください。
文字列を1回ループし、定義した文字を置き換える独自の関数を定義できます。
def sanitize(input_string):
output_string = ''
for i in input_string:
if i == '>':
outchar = '>'
Elif i == '<':
outchar = '<'
else:
outchar = i
output_string += outchar
return output_string
次に電話
sanitize('<3 because I am > all of you')
収量
'<3 because I am > all of you'
Html.escape()を使用します-cgi.escape()はPython 3で非推奨になりました
import html
input = '<>&'
output = html.escape(input)
print(output)
<>&