5

根据XLRD模块的文档,

 row_values(rowx, start_colx=0, end_colx=None)

“返回给定行中单元格值的一部分。”

并给出以下python代码:

import xlrd
wb=xlrd.open_workbook("xl1.xlsx")
sh = wb.sheet_by_index(0)
for rownum in range(sh.nrows):
    print sh.row_values(rownum) 

输出是:

 [12.0, u'test.0']
 [34.0, u'te.st']
 [u'test123', u'12.test']

并且 exel 文件包含以下数据:

12.0 , test.0 , 34.0 , test.st , test123 , 12.test

那么,根据输出,我得到什么类型的数据结构作为一行?它不是元组,(因为在打印元组类型时,没有 u' 作为字符串的前缀),那么 u' 的含义是什么?就像我们在数据结构中有两种类型的数据 - int 和“non int”。这是真的吗?我在文档中找不到有关此的任何信息。谢谢!

4

2 回答 2

2

row_values返回具有适当数据类型的单元格值列表。列表中每个项目的数据类型取决于源 Excel 文件中的单元格类型。

可能有只有string,floatint数据类型的项目,请参阅此映射表(查找文档Cell)以获取更多信息。

u只是意味着这是一个unicode字符串。文档很好地解释了它。

希望有帮助。

于 2013-07-04T10:13:23.283 回答
0

最重要的事情!
我不知道您使用的是哪个版本的 xlrd,但根据最新版本(撰写此答案时 xlrd 0.9.4):

row_values() 

将以列表的形式返回行中的值。这可以通过键入来验证:

>>> type(sh.row_values(2))
<type 'list'>

接下来要获取包含数据类型的行的值,您可以键入以下内容:

>>> sh.row(2)

这会返回给你这样的东西:

[number:12.0, text:u'test.0']

这意味着列表中的第一项是数字,第二项是字符串或也称为文本。

最后,u字符串前面的表示是Unicode编码。请记住,xlrd 模块将尝试将 excel 工作表中的每个数据呈现为 unicode 编码,因此您会看到u

xlrd 模块官方文档

于 2016-03-16T16:45:16.950 回答