使用xlrd在Python中从xls提取数据

1 投票
4 回答
5058 浏览
提问于 2025-04-30 20:39

我正在尝试从一个 .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

撰写回答