6

以前にを作成listしてファイル「mylist.txt」に保存しました。ただし、文字列で読み取ると、各要素に好きなようにアクセスできません。私はこれを修正する方法を探し求めてきましたが、役に立ちませんでした。

テキストドキュメントでは、リストは1行で、次のようになります。

[(['000', '001', '002'], ('010', '011', '012')), (['100', '101', '102'], ('110', '111', '112'))]

このリストがに等しい場合mylist、私はすることができます

>>> print mylist[0]
(['000', '001', '002'], ('010', '011', '012'))
>>> print mylist[0][0]
['000', '001', '002']
>>> print mylist[0][0][2]
002

上記は私には便利ですが、リストを読むと次のような効果があります。

>>>myreadlist=open("mylist.txt",'r').read()
>>>myreadlist
"[(['000', '001', '002'], ('010', '011', '012')), (['100', '101', '102'], ('110', '111', '112'))]"
>>>myreadlist[0]
'['
>>>print myreadlist[0]
[
>>>myreadlist[:15]
"[(['000', '001'"

のフォーマットが悪いことは知っていますがmylist、それは私が望むもので機能し、それを生成するのに非常に長い時間がかかりました。リストをPythonのようにコピーして貼り付けようとしましmylist = <paste>たが、リストが長すぎてメモリエラーが発生します。

ファイルを読み取り、それをlist通常のように(つまり、上記の最初の印刷ステートメントに示されているように)各要素にアクセスできるように使用する方法はありますか?

どうもありがとう

4

2 に答える 2

16

文字列をに渡しますast.literal_eval。文字列を適切な構造に安全に解析します。

>>> import ast
>>> with open("file.txt", 'r') as f:
        data = ast.literal_eval(f.read())
>>> # You're done!
于 2013-03-24T05:52:31.840 に答える
0

アプリではプレーンテキストファイルである必要がありますか?Pythonリストとして正しくフォーマットされていれば、テキストではなくPythonコードに変換できます。ファイルの名前mylist.pyを変更し、リストの先頭に。のような割り当てを追加しますmylist = [xxx]

このリストへのアクセスを必要とするPythonスクリプト内で、作業を実行できるようにリストをインポートfrom .mylist import mylistできます(例mylist[0]など)。

上記のインポートは、mylist.pyとPythonスクリプトが同じモジュール(__init__.pyファイルが含まれる同じディレクトリ)にあることを前提としています。それが明確でない場合(Pythonモジュールを参照)、リスト全体をスクリプトと同じファイルにコピーし、代わりに同じファイルの先頭に割り当てを行います。

于 2013-03-24T05:59:35.193 に答える