Python xlrd:如何转换提取的值?
我有一个问题,感觉在这里已经被回答过好几次了。不过作为新手,我还是不太明白怎么做一个非常基础的操作。
事情是这样的:
我有一个
.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