xlrd输出的col显示xf格式文本,如何去除?

2 投票
2 回答
3717 浏览
提问于 2025-04-17 14:16

我正在使用XLRD这个工具,想要从我的Excel文档中读取和处理单元格里的字符串文本。我会把我的代码贴出来,还有我在打印某一列时返回的文本。

import xlrd
data = xlrd.open_workbook('data.xls')
sheetname = data.sheet_names()
employees = data.sheet_by_index(0)

print employees.col(2)

>>>[text:u'employee_first', text:u'\u201cRichard\u201d', text:u'\u201cCatesby\u201d', text:u'\u201cBrian\u201d']

我的目的是创建一个字典,或者用Python中的字符串来引用Excel文档。我希望我的程序中的一些函数能够在本地处理这些数据,然后在稍后的某个时刻(这不是我现在要讨论的问题)输出到第二个Excel文件中。

我该如何去掉这些多余的信息呢?

2 个回答

1

如果你只关心单元格里的值,那么你应该这样做:

values = sheet.col_values(colx=2)

而不是这样:

cells = sheet.col(colx=2)
values = [c.value for c in cells]

因为这样写更简洁,也更高效(Cell对象是在需要的时候才创建的)。

1

employees.col(2) 是一个包含 xlrd.sheet.Cell 实例的列表。要获取这一列的所有值(而不是 Cell 对象),你可以使用 col_values 方法:

values = employees.col_values(2)

你也可以这样做(这是我最初的建议):

values = [c.value for c in employees.col(2)]

但是这样做的效率远不如使用 col_values

\u201c\u201d 分别是unicode格式的左双引号和右双引号。如果你想去掉这些引号,可以使用比如说,lstrip 和 rstrip 字符串方法。比如像这样:

values = [c.value.lstrip(u'\u201c').rstrip(u'\u201d') for c in employees.col(2)]

撰写回答