我有一列日期在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'
我还尝试了下面提到的列表理解方法,并且得到了类似的错误。
答案 0 :(得分:0)
代替:
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 cell,要访问该单元格的内容,您需要添加value
。
要将此更改应用于所有单元格,可以使用列表理解:
row_array = [row.value for row in row_array]
或者您可以确保数组以实际值开头:
row_array.append([row.value for row in worksheet.row(curr_row)])