通常、ユーザー入力に対してevalを使用しないでください。誰かが、いたずらに評価されるステートメントを入力する可能性があります。
同じ理由で、 input()の使用は避けてくださいeval(raw_input())
。
ただし、ast.literal_evalを使用して、Python データ構造へのユーザー入力の Python 解釈を安全に取得できます。
>>> import ast
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: 1,2,3
(1, 2, 3)
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: [1,2,3]
[1, 2, 3]
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: 123
123
>>> ast.literal_eval(raw_input('type a number: '))
type a number: 0xab
171
(いずれの場合も、次の最初の行>>> Type Python input:
は私が入力したものですraw_input()
数字を分割したい場合は、これを行うことができます:
>>> [int(c) for c in raw_input() if c in '1234567890']
1234
[1, 2, 3, 4]
>>> [int(c) for c in raw_input() if c in '1234567890']
123a45
[1, 2, 3, 4, 5]
数字以外がフィルタリングされていることに注意してください。