私はそうのようにリスト内にネストされたタプルからの指示読み込む仮想マシンを持っている:文字列にリストを変換し、バック
[(0,4738),(0,36),
(0,6376),(0,0)]
マシンコードプログラムのこの種を保存し、テキストファイルが最も簡単ですが、文字列として記述する必要があります。明らかに戻って変換するのはかなり困難です。
文字列をリストに読み込み、リストを読み込み可能なモジュールがありますか?
要件:
- が保存された形で読める人間でなければなりません
- が
私はそうのようにリスト内にネストされたタプルからの指示読み込む仮想マシンを持っている:文字列にリストを変換し、バック
[(0,4738),(0,36),
(0,6376),(0,0)]
マシンコードプログラムのこの種を保存し、テキストファイルが最も簡単ですが、文字列として記述する必要があります。明らかに戻って変換するのはかなり困難です。
文字列をリストに読み込み、リストを読み込み可能なモジュールがありますか?
要件:
import json
with open(data_file, 'wb') as dump:
dump.write(json.dumps(arbitrary_data))
と同様:
source = open(data_file, 'rb').read()
data = json.loads(source)
使用json
moduleを実装することは比較的容易でなければなりません(したがって、 "漬物" は適していません):
string = json.dumps(lst)
lst = json.loads(string)
デモ:
>>> import json
>>> lst = [(0,4738),(0,36),
... (0,6376),(0,0)]
>>> string = json.dumps(lst)
>>> string
'[[0, 4738], [0, 36], [0, 6376], [0, 0]]'
>>> lst = json.loads(string)
>>> lst
[[0, 4738], [0, 36], [0, 6376], [0, 0]]
代わりにrepr()
とast.literal_eval()
を使用することもできます。
>>> from ast import literal_eval
>>> string = repr(lst)
>>> string
'[[0, 4738], [0, 36], [0, 6376], [0, 0]]'
>>> lst = literal_eval(string)
>>> lst
[[0, 4738], [0, 36], [0, 6376], [0, 0]]
JSONは、Pythonのサポート直列化の外のツールからの支援、パースと検証で、標準フォーマットであるという利点があります。ただも往復することができます、タプルと整数を示していますのために。 json
ライブラリも、ast.literal_eval()
関数よりもはるかに高速です。
ちょうどあなたがrepr()
を使用して文字列に変換することができますast.literal_eval
>>> from ast import literal_eval
>>> a = literal_eval('[(1, 2)]')
>>> a
[(1, 2)]
を使用しています。
>>> repr(a)
'[(1, 2)]'
ダング私は遅くなっていた! – Serial
これらはちょうど2つのタプルであれば、あなたはcsv
moduleを使用してCVSファイルに保存することができます。角かっこは必要ありません。
with open('path/to/file', 'w') as outfile:
for tup in L:
outfile.write("%s\n" %' '.join(str(i) for i in tup))
with open('path/to/file) as infile:
L = [tuple(int(i) for i in line.strip().split()) for line in infile]
あなただけの原始的なPythonの種類を扱っている場合は、あなただけ使用することができます内蔵のrepr()
:
Help on built-in function repr in module __builtin__:
repr(...)
repr(object) -> string
Return the canonical string representation of the object.
For most object types, eval(repr(object)) == object.
eval
簡単な方法でそれを実行する必要があります。
>>> str([(0,4738),(0,36),(0,6376),(0,0)])
'[(0, 4738), (0, 36), (0, 6376), (0, 0)]'
>>> eval(str([(0,4738),(0,36),(0,6376),(0,0)]))
[(0, 4738), (0, 36), (0, 6376), (0, 0)]
ドキュメントへのリンク、+1ありがとう! –