Python xlrd:如何转换提取的值?

9 投票
4 回答
29573 浏览
提问于 2025-04-17 10:31

我有一个问题,感觉在这里已经被回答过好几次了。不过作为新手,我还是不太明白怎么做一个非常基础的操作。

事情是这样的:

  • 我有一个 .xls 文件,当我用 xlrd 来获取一个值时,我只是用 sh.cell(0,0) (假设 sh 是我的工作表);

  • 如果单元格里的内容是字符串,我得到的结果是 text:u'MyName',但我只想要字符串 'MyName'

  • 如果单元格里的内容是数字,我得到的结果是 number:201.0,但我只想要整数 201

如果有人能告诉我该怎么做,才能只提取我想要的格式的值,感谢!

4 个回答

1

这段代码可以让你获取Excel中一个单元格的内容。

    var = sh.cell(x,y)
    print var.value

不过,这个数据的类型还是'unicode'。如果你想把它转换成字符串(ascii格式),可以使用下面的代码:

    var.value.encode('ascii','ignore')
3

你也可以直接用xlrd提取值,而不是返回整个Excel单元格的内容:

book = xlrd.open_workbook('example.xls')
first_sheet = book.sheet_by_index(0)
print first_sheet.row_values(0)

这段代码可以获取第一张表的第一行的值。

你可以用切片来获取行的值(对列也是一样)。所以如果想获取整张表的值,可以这样做:

cells = []
for i in range(first_sheet.nrows):
    cells.append(first_sheet.row_values(rowx=i,start_colx=0,end_colx=None))

虽然用xlrd可能还有更优雅的方法,但这个对我来说是有效的。

17

sh.cell(x, y) 会返回一个叫做 Cell 的类的实例。当你打印 sh.cell(x,y) 的时候,其实是在显示这个类的 repr 函数的结果(所以它会打印出类型:值)。

你可以试试:

cell = sh.cell(x,y)
print(cell.value)

我无法测试这个,因为我没有 xlrd,但我觉得根据文档来看,它应该是可以工作的:https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#sheet.Cell-class

撰写回答