1

カンマで区切られた3つの列で構成されるファイルを読み取り、各行のタプルを作成し、これらのタプルのリストを作成するPythonスクリプトを作成しています。次のスクリプトを使用して、私が望むことを達成します。次の各ステップを別々の行に書くよりも簡単でエレガントなアプローチがあるかどうか疑問に思っていました。

import sys
fin=open(sys.argv[1],'r') 

list  = []

for line1 in fin:
        line2 = line1[:-1]
        line3 = line2.split(',')
        line4 = tuple(line3)
        list.append(line4)
print(list)

ご回答ありがとうございます。

4

2 に答える 2

4

リスト内包表記の使用:

lst = [tuple(line.rstrip().split(',')) for line in fin]

(変数に名前を付けないでくださいlist。組み込み変数に影を落とし、予期しないバグを引き起こす可能性があります)。

于 2013-02-05T16:03:53.527 に答える
2

Pythonには電池が含まれています!csvファイルを読み取る必要がある場合は、csvモジュールを使用してください。

import sys, csv

with open(sys.argv[1]) as f:
    lst = list(csv.reader(f))

これによりリストのリストが作成されることに注意してください。何らかの理由でタプルが必要な場合は、

with open(sys.argv[1]) as f:
    lst = [tuple(row) for row in csv.reader(f)]
于 2013-02-05T16:14:10.667 に答える