我是Python的新手,我只是在学习东西的时候。
我试图将数据从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
第一个print语句应该给我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 :(得分:0)
csv.reader
模块在每次迭代时生成一个字符串行列表。
即使每行只有一列或者数据包含整数。
要获取每行的整数列表,请在列表解析中执行:
row1 = [int(x) for x in next(reader)]
或者因为它的python 2:
row1 = map(int,next(reader))
然后使用row1[2]
以整数形式访问该行的第3个元素。
答案 1 :(得分: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])