2017-01-21 106 views
0

我是Python的新手,我幾乎只是在學習東西。將字符串讀爲整數? (Python 2.7)

我想從一個Excel文件導入數據到我的Python程序。我需要能夠在Python程序中使用這些數字進行簡單的計算,而不是使用Excel。現在代碼如下:

import csv 
    with open ('vals.csv','rb') as csvfile: 
     reader = csv.reader(csvfile) 
     x = next(reader) 
     y = next(reader) 
     z = next(reader) 

     print x[0]+z[2] 
     print x[0]+1 

第一個打印語句應該給我7(因爲第一個x是3,第三個z是4)。相反,它打印34,所以我假設它不是將值視爲整數?

第二print語句導致此錯誤:

TypeError: cannot concatenate 'str' and 'int' objects 

所以此基礎上,我想這是閱讀每行作爲一個字符串,而不是整數。我試着這樣做未來的事情,看看這是否會將其轉換爲整數:

x = next(reader) 
    x = int(x) 
    y = next(reader) 
    y = int(y) 
    z = next(reader) 
    z = int(z) 

但它給我這個錯誤:

TypeError: int() argument must be a string or a number, not 'list' 

所以我想這不是閱讀它作爲一個字符串?

我只是想知道如何讓它像x [0](以及所有其餘的)一樣讀取一個整數,所以我可以用它來計算。

+0

http://stackoverflow.com/help/someone-answers –

回答

0

csv.reader模塊在每次迭代時產生一串行字符串。

也就是說,即使每行只有一列或者數據包含整數。

要在每一行得到一個整數列表做一個列表理解:

row1 = [int(x) for x in next(reader)] 

還是因爲它的蟒蛇2:

row1 = map(int,next(reader)) 

然後使用row1[2]訪問該行的第三個元素作爲整數。

0

csv.reader是對應列的行中的字符串lists可迭代:

x = next(reader) 
# x: ['3', '4', '5'] 

如果所有的值可以轉換爲int,你可以這樣做:

x = map(int, x) 
# x: [3, 4, 5] 

否則,您必須單獨轉換字段:

x[0] = int(x[0]) 
+0

非常感謝!它現在完美運行! – user7446944