0

読みたい出力ファイルがあり、各行がいくつかのタイプを結合して作成され、リスト中かっこを前後に追加したとします。

[('tupleValueA','tupleValueB'), 'someString', ('anotherTupleA','anotherTupleB')]

私は行を読みたいと思っています。これで、それらを読み込んで、文字列を操作して値と型を割り当てることができますが、Python にこれのためのより高いレベルの方法があるかどうか疑問に思っていました。

これを行う関数を作成した後、より高いレベルのアプローチを見つけようとしましたが、見つかりませんでした。

4

3 に答える 3

2

あなたが探しているのはevalです。ただし、この関数は行を評価して実行することに注意してください。したがって、信頼できない入力で実行しないでください。

>>> print eval("[('tupleValueA', 1), 'someString']")
[('tupleValueA', 1), 'someString']

出力ファイルを生成するスクリプトを制御できる場合は、jsonエンコーディングを使用することをお勧めします。JSON 形式は、リストと辞書の Python 文字列表現に非常に似ています。また、読み取りがはるかに安全で堅牢になります。

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> json.loads('["foo", {"bar": ["baz", null, 1.0, 2]}]')
["foo", {"bar": ["baz", null, 1.0, 2]}]
于 2009-05-22T23:26:54.133 に答える
0

おそらく、通常の文字列を使用するのではなく、最初にpickleなどのモジュールを使用してデータを保存する方がよいでしょう。このようにして、付随する多くの問題を回避しeval、より堅牢なソリューションを得ることができます。

于 2009-05-22T23:51:51.713 に答える