2016-12-04 67 views
0

我目前正在試圖從一個CSV文件導入的元組號碼列表,看起來像這樣:格式的CSV文件

[(60,20),(100,55),(50,40 ),(20,70 ),(95,85)])

def tuples(filename): 
    import csv 
    with open(filename) as csvfile: 
     rdr = csv.reader(csvfile) 
     next(rdr, None) 
     my_list = [tuple(filter(None, row)) for row in rdr] 
     print(my_list) 

tuples("tuple.csv") 

然而此刻我的輸出爲: [( '60', '20'),( '100','55 '),('50','40'),('20','70',''),('95','85')]

如何格式化我的代碼以擺脫引號和空白字段。 任何幫助,將不勝感激。

+0

你不想「擺脫引號」,你想將字符串轉換爲整數... – kindall

+0

對不起,措辭不佳,我該怎麼做? – Konnichiwa

回答

1

應用列表解析(這是整潔,但很難理解的初學者),通過所有的值迭代和每個元素轉換爲整數如果存在

my_list = [('60', '20'), ('100', '55'), ('50', '40'), ('20', '70', ' '), ('95', '85')] 
my_formatted_list = [tuple(int(value) for value in _tuple if value.strip()) for _tuple in my_list] 
+0

所以我應該用這個變量替換my_list? – Konnichiwa

+0

謝謝,但是,我必須手動輸入元組列表並將其分配給變量_list? – Konnichiwa

+0

它工作順便說一句,只是好奇 – Konnichiwa

0

如果你想在一列整數的值,你可以做

intlist = [] 
for i in my_list: 
    intlist += int (i) 
print (intlist) 

這將輸出[(60,20),(100,55),(50,40),(20,70 ),(95,85))

如果要輸出的值seperately你可以只在你的列表循環一樣,

for i in my_list: 
    print (int (i)) 

如果你想讓它在一行上嘗試類似的東西

line = "" 
for i in my_list: 
    line += i 
print (line) 
+0

這會做什麼? – Konnichiwa

+0

你想用導入的值做什麼? – mondlos

+0

它會遍歷列表,將所有內容轉換爲整數並將其添加到新列表中。 – mondlos

0

您可以使用list comprehensionmap()功能象下面這樣:

my_list = [('60', '20'), ('100', '55'), ('50', '40'), ('20', '70', ' '), ('95', '85')] 
[tuple(map(int, item[:2])) for item in my_list] 
# Output: [(60, 20), (100, 55), (50, 40), (20, 70), (95, 85)] 

說明:

map(int, item[:2]),map()用於將函數int()應用於item[:2]的每個元素。

item[:2],僅使用my_list中每個tuple的2個第一元素。