Python和excel读取文件问题

2024-10-01 17:41:02 发布

您现在位置:Python中文网/ 问答频道 /正文

如果这是一个愚蠢的问题,我很抱歉,但我已经为此工作了几个小时,我不能使它工作。请帮忙!在

我有一个源于Excel的.txt文件。文件包含字符串和数字,但我只对数字感兴趣,这就是为什么我跳过第一行,只从第2列开始阅读。在

   from numpy import *

我把它加载到Python中

^{pr2}$

因为我需要用它来计算,所以我把它转换成一个矩阵:

    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_'>

我怎样才能真正地把我所有的条目都转换成整数呢? 谢谢!在


Tags: 文件字符串inselfnumpyforlenis
3条回答

在创建数组之前,在读取数字时转换它们:

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)

如果有人有一个问题可能具有相同的标题,但使用的是真正的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)

如果使用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)

http://docs.python.org/library/csv.html

相关问题 更多 >

    热门问题