Python 和 Excel 读取文件问题
抱歉,如果这个问题听起来很傻,但我已经花了几个小时在这个上面,还是搞不定。请帮帮我!
我有一个从Excel导出的.txt文件。这个文件里有字符串和数字,但我只对数字感兴趣,所以我跳过了第一行,从第二列开始读取。
from numpy import *
我在Python中加载这个文件,使用的是
infile = open('europenewMatrix.txt','r')
infile.readline() # skip the first line
numbers = [line.split(',')[2:] for line in infile.readlines()]
infile.close()
因为我需要对这些数据进行计算,所以我把它转换成一个矩阵:
travelMat = array(numbers)
好的,但这样并没有把字符串转换成整数,所以我手动进行了转换:
for i in xrange(len(numbers)):
for j in xrange(len(numbers)):
travelMat[i,j] = int(self.travelMat[i,j])
#end for
到这个时候,我希望我的所有数据都能变成整数,但如果我执行
print 'type is',type(self.travelMat[1,2])
得到的结果是:
type is <type 'numpy.string_'>
我该如何真正把所有的数据都转换成整数呢?非常感谢!
3 个回答
0
如果有人有一个问题,标题可能和这个一样,但使用的是实际的Excel(.xls)文件,可以试试这个方法(使用模块 xlrd):
import xlrd
import numpy as np
sheet = xlrd.open_workbook('test_readxls.xls').sheet_by_name('sheet1')
n_rows, n_cols = 5,2
data = np.zeros((n_rows, n_cols))
for row in range(n_rows):
for col in range(n_cols):
data[row,col] = float(sheet.cell(row,col).value)
1
如果你在处理csv文件或者类似csv格式的文件,建议使用csv这个标准库模块。
from numpy import *
import csv
infile = open('europenewMatrix.txt', 'r')
reader = csv.reader(infile)
reader.next() # skip the first line
numbers = [[int(num) for num in row[2:]] for row in reader]
infile.close()
travelmat = array(numbers)
2
在创建数组之前,先把你读到的数字转换一下:
infile = open('europenewMatrix.txt','r')
infile.readline() # skip the first line
numbers = []
for line in infile:
numbers.append([int(val) for val in line.split(',')[2:]])
infile.close()
travelMat = array(numbers)