2016-08-26 12 views
-3

ファイルのリストをリスト形式で取得したいと思います。リスト要素に括弧を追加する - Python

ファイル入力:

次は私がリストに追加したいファイルから読んでいたデータである(3,5)、(5,2)、(2,1)、 (4,2)、(4,1)、(3,1)

次のコードは、私が今持っているものを示しています。

with open("partial.txt") as f: 
List = f.read().splitlines() 

graph1 = ','.join('({0})'.format(w) for w in List) 

print (graph1) 

私が手出力は次のようになります。

>> (3,5),(5,2),(2,1),(4,2),(4,1),(3,1) 

しかし、私はこのように、[]で上記の結果をしたい:

>> [(3,5),(5,2),(2,1),(4,2),(4,1),(3,1)] 

誰かが私は上記の結果に

+0

タプルのリストを取得しますか? –

+0

just: 'result = [eval(graph1)] –

+0

はいタプルのリスト。 – user3624406

答えて

3
import ast 

s = "(3,5),(5,2),(2,1),(4,2),(4,1),(3,1)" 

>>> list(ast.literal_eval(s)) 
[(3, 5), (5, 2), (2, 1), (4, 2), (4, 1), (3, 1)] 

を取得するために何をする必要があるかを示してできます。ここevalからSO linkです対ast.literal_eval

+0

私はこれを行い、[((3,5)、(5,2)、(2,1)、(4,2)、(4,1)、(3,1))]を得る。余分なのはなぜですか? – user3624406

+0

['ast.literal_eval()'](https://docs.python.org/2/library/ast.html#ast.literal_eval)を使用する方が便利です。この文字列の出力は同じですが、 'ast.literal_eval()'は 'eval()'のやり方と実際にキーを渡すことはありません。 –

+0

@ user3624406:代わりに '[eval(s)]'のように聞こえます。 –

0

タプルのこのコードでそれを解決しました! :

with open('partial.txt') as f: 
graph = [tuple(map(int, i.split(','))) for i in f] 

print (graph) 
関連する問題