2013-02-05 61 views
1

我正在編寫一個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) 

謝謝你的回答。

回答

2

Python隨附電池!如果你需要閱讀的CSV文件,只需使用csv module

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)] 
+0

要添加/修復'csv'模塊,需要'open()'多一個參數。 Python 3的'newline ='''或Python 2的''rb''。 – pepr

4

使用列表理解:

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

(不要將其命名你的變量list;它陰影內置的,並可能導致意想不到的錯誤)。

+0

@mgilson:使用適當的字體,如果你混淆'l'和'1'! :-P –

+0

我可能在我的個人代碼中有'l'變量名,但PEP8 [警告它](http://www.python.org/dev/peps/pep-0008/#names-to-avoid )。我覺得來自頂級用戶的答案應該是原始python代碼的例子:-)(隨時隨時清理我的任何不太理想的帖子; - ) - 另外,它讓我更接近一些關於編輯的徽章我不知道名字...... – mgilson

+0

@mgilson :-P好的,如果PEP-8對此發出警告,我將來會更加小心.. –

相關問題