xlrd输出的col显示xf格式文本,如何去除?
我正在使用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)]