Python 和 Excel 读取文件问题

4 投票
3 回答
1840 浏览
提问于 2025-04-16 21:45

抱歉,如果这个问题听起来很傻,但我已经花了几个小时在这个上面,还是搞不定。请帮帮我!

我有一个从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)

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

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)

撰写回答