2017-10-08 7 views
0

リスト内にある2つのリストの要素に到達しようとしています。この最後のリスト(他の2つのリストを含む)はファイル内にあります。リストファイルからのインデックス作成

ファイルから大きなリストを印刷すると、['[0,1]、[2,3]']のようになり、それはraderと呼ばれます。

rader = ['[0,1],[2,3]'] 

私は、次のコマンドを使用して、大きなリストの要素に印刷しようとしている: print(rader[0][0])私は数0権利を与える必要がありますか?しかし、私はこれを行うときにエラーが発生します: 'IndexError:リストのインデックスが範囲外です'。

私はtxt.fileをリスト内で開き、それを(file = open('eddie.txt','r'))から読むと、それが文字列としてすべて解釈されることが問題だと思います!それで私はリストの要素に到達できないのですか?

txt.fileの[[0,1]、[2,3]]ではなく、[[0,1]、[2,3]]のようにしたいですか? 私はこれをするのですか?あなたはそれなしで、このコードdoesn't実行、Imは別のファイルからいくつかの機能をインポート見ることができるように

from Tv_LABB2 import * 


fil = open('edvin.txt','r', encoding = 'UTF-8') 

rader = [] 

rad = fil.readline() 

while rad !='': 

    rader.append(rad) 
    rad = fil.readline() 

fil.close() 

fil = open('edvin.txt') 

print(rader) (this is == ['[0,1],[2,3]']) 

fil.close() 



tv1 = TV('VardagsrumsTV',str(rader[0]),str(rader[1]))    

tv2 = TV('KöksTv',str(rader[2]),str(rader[3])) 

、私はあなたが私の質問を理解すると思う:ここ

は私のコードです!

+0

このファイルは元々作成しましたか?この場合、問題の原因を取り除くことができます。 – roganjosh

+0

ファイルの内容がどのように表示されますか?私の推測では、典型的な線は... '[0,1]、[2,3] \ n'のように見えます。 –

+0

はい、私はしました!私のtxtファイルを開くと、[[0,1]、[2,3]]ではなく、[[0,1]、[2,3]]が含まれています。さもなければ私は ''を消すだろうか、それとも何を意味しますか? - @roganjosh – SimpleMinded

答えて

0

あなたはraderリストのリストではない文字列のリスト

使用rader = [[0,1],[2,3]]ないrader = ['[0,1],[2,3]']

+0

質問はあいまいですが、私はOPがどのようにリストを作成したかではなく、 'print'の出力を示していると思います。 – roganjosh

0

あなたはastを使用して変換することができますを行う必要があります。ファイルの読み取り

>>> rader = ['[0,1],[2,3]'] 
>>> import ast 
>>> r = list(ast.literal_eval(rader[0])) 
>>> r 
[[0, 1], [2, 3]] 
>>> print r[0][0] 
0 
0

は常にバイトを生成しますまたは文字列。 Pythonのデータ構造が必要な場合は、それらを作成する必要があります。明らかに、これを行うためにすでに多くのツールが用意されています。最も簡単なもの(usually inadvisable)はevalです。 ast.literal_evalと呼ばれるより安全なバリアントがあります。

さらに、オンディスクフォーマットを変更することもできます。空白を使って値を区切り、str.splitのようなものを使ってリストを作ることもできますし、(あなたのデータが別のPythonプロセスから来たものなら)pickleを使うこともできます。

また、簡略化:rader=list(fil)は、テキスト行を読むために必要なものです。

関連する問題