1

raw_input の文字列を安全に使用して、簡単かつ安全に使用するためのスクリプトに置き換える関数を作成する方法を考えています。

その理由は、Python を使用して文字シート生成アプリケーションを作成しようとしていて、簡単にアクセスできる名前 (Charname_NLB) を使用して文字列として渡す文字のフル ネームを取得できる必要があるためです。

ただし、これをそのアプリケーション以外にも使用することを検討しているため、この代替コマンドを使用して、生の入力として入力された任意の文字列に対してこれを使用できるようにする必要があります。

私はすでに整数の入力用に同様の作品を作成しており、簡単にするために同じクラスに統合したいと考えています。Mgilson と BlueKitties (それぞれ here と www.python-forum.org から) に感謝して、ここに投稿します。

    def safeinput(get_num):
            num = float(raw_input(get_num))
            return num

ただし、これが base Input コマンドと同じ結果を安全に返さない場合は、作業コピーを入手してください。現在、作業する概念実証は 1 つしかなく、切り捨てられた数値では正確ではないためです。

**編集:「任意の文字列」とは、具体的には結果がコマンドとしてではなく、文字列として保存されることを意味します。

4

1 に答える 1

3

これがあなたが求めているものかどうかはわかりません。literal_eval安全ですが、リテラルに対してのみ機能します。eval()入力をサニタイズする必要がある場合、安全に使用することは非常に困難です

>>> from ast import literal_eval
>>> def safeinput(s):
...     try:
...         return literal_eval(s)
...     except:
...         return s
... 
>>> repr(safeinput("1"))
'1'                                            # converted to an int
>>> repr(safeinput("1.1"))
'1.1'                                          # converted to a float
>>> repr(safeinput("'some string in quotes'"))
"'some string in quotes'"                      # converted to a string
>>> repr(safeinput("some string without quotes"))
"'some string without quotes'"                 # no conversion necessary
于 2012-08-24T06:07:06.227 に答える