繁体   English   中英

使用xlrd模块将xls转换为Python数组

[英]Using xlrd module to turn xls into Python array

我有一列日期在Excel中格式化为字符串。 我需要在Python脚本中将它们用作数组,因此我使用了此脚本将它们转换为数组。

import xlrd
workbook = xlrd.open_workbook('/Users/reallymemorable/Documents/output.xlsx')
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows
curr_row = 0

#creates an array to store all the rows
row_array = []

while curr_row < num_rows:
    row = worksheet.row(curr_row)
    row_array += row
    curr_row += 1

print(row_array[0])

但是输出是

text:'09/30/2018-09/26/2018'

代替

09/30/2018-09/26/2018

有没有办法在xlrd中解决这个问题? 还是我需要使用其他模块?

这是示例输入列:

09/30/2018-09/26/2018
09/25/2018-09/21/2018
09/20/2018-09/16/2018
09/15/2018-09/11/2018
09/10/2018-09/06/2018
09/05/2018-09/01/2018
08/31/2018-08/27/2018

编辑:

我试图使用.value以这种方式摆脱文本:

while curr_row < num_rows:
    row_array.append(worksheet.row(curr_row).value)
    curr_row += 1

但是我得到这个错误:

  File "xlrd.test.py", line 13, in <module>
    row_array.append(worksheet.row(curr_row).value)
AttributeError: 'list' object has no attribute 'value'

我还尝试了下面提到的列表理解方法,并得到了类似的错误。

代替:

print(row_array[0])
# text:'09/30/2018-09/26/2018

指定值:

print(row_array[0].value)
# 09/30/2018-09/26/2018

这里的问题是row_array[0]是一个xlrd单元 ,要访问该单元的内容,您需要添加value

要将更改应用到所有单元格,可以使用列表推导

row_array = [row.value for row in row_array]

或者,您可以确保数组以实际值开头:

row_array.append([row.value for row in worksheet.row(curr_row)])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM