使用xlrd在Python中从xls提取数据
我正在尝试从一个 .xls 文件 中提取数据,并制作一个列表,但我得到的列表是 [u'elem1', u'elem2', u'elem3']
。如果我单独打印每个元素,我得到的是:
elem1
elem2
elem3
那个 u 是什么意思,怎么去掉它呢?
这是我的代码...
from xlrd import open_workbook
xls=open_workbook('name.xls')
for sheets in xls.sheets():
list1=[]
for col in range(sheets.ncols):
for rows in range(sheets.nrows):
list1.append(sheets.cell(rows, col).value)
print(list1)
for i in list1:
print(i)
4 个回答
0
从实际情况来看,开头的 u
不会影响到你。你可以照常使用它们,除非你在不同格式的编码上遇到一些问题。
1
我通过以下方法解决了这个问题:
str(variable_name)
2
假设你在使用 Python 2.x,前面的 u
表示 xlrd 给你的是 Unicode 字符串(这就是 Excel 中的字符串真实的样子)。如果你想把它们转换成 Python 2.7 的字符串,你需要用你所使用的字符集来编码它们。
假设你使用的是 latin1(也叫 iso-8859-1,或者有些小差别的 windows-1252),你可以通过下面的方式把你的 Unicode 字符串列表转换成 latin1 字符串列表:
strlist = [ elt.encode('latin1') for elt in list1 ]
或者如果你只有 ASCII 字符的话
strlist = [ str(elt) for elt in list1 ]
3
你可以把文本定义为字符串,然后在用list1.append(str(sheets.cell(rows, col).value))把数据添加到列表时,去掉[u'这个部分。代码如下:
from xlrd import open_workbook
xls=open_workbook('name.xls')
for sheets in xls.sheets():
list1=[]
for col in range(sheets.ncols):
for rows in range(sheets.nrows):
list1.append(str(sheets.cell(rows, col).value))
print(list1)
for i in list1:
print i