[英]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.