ast.literal_evalを使ってください。
Python
1import ast
2
3file_content3 = ast.literal_eval(file_contents[3])
4print(type(file_content3), file_content3) # => <class 'tuple'> (36, 67, 34, 97)
どんな式でも実行してしまうevalに比べ、
ast.literal_evalはリテラル形式の文字列しかパースしないので比較的安全です。
Python
1>>> password = 'MY_SECRET_PASSWORD'
2>>> eval(input())
3(2, 3)
4(2, 3)
5>>> eval(input())
6print(*('{}: {}'.format(k, v) for k, v in locals().items()), sep='\n')
7__name__: __main__
8__doc__: None
9__package__: None
10__loader__: <class '_frozen_importlib.BuiltinImporter'>
11__spec__: None
12__annotations__: {}
13__builtins__: <module 'builtins' (built-in)>
14password: MY_SECRET_PASSWORD
Python
1>>> from ast import literal_eval
2>>>
3>>> password = 'MY_SECRET_PASSWORD'
4>>> literal_eval(input())
5(2, 3)
6(2, 3)
7>>> literal_eval(input())
8print(*('{}: {}'.format(k, v) for k, v in locals().items()), sep='\n')
9Traceback (most recent call last):
10 File "<stdin>", line 1, in <module>
11 File "C:...\ast.py", line 99, in literal_eval
12 ...
13ValueError: malformed node or string: <_ast.Call object at 0x0000018D769DCF10>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。