python - 从excel中读取日期作为字符串Python
问题描述
我知道这已被问过几次,但即使我尝试了许多给定的答案,我也无法完全弄清楚我的问题。我正在尝试读取表示为日期的 Excel 单元格,但是当它使用 Python 导入我的程序时,它表示为浮点数。
我的 excel 电子表格中的第四列(即 index=3)包含我试图从浮点数转换为字符串的所有日期。我只是将所有值添加到列表中以对整行执行某些操作,然后将其清除并移至下一行。
我的代码基于以下答案:https ://stackoverflow.com/a/13962976/3480297
这是我正在使用的示例数据(文件):
import xlrd
workbook = xlrd.open_workbook(file)
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows
num_cols = worksheet.ncols
values = []
i = 0
j = 0
while i < num_rows:
while j < num_cols:
if j == 3:
values.append(xlrd.xldate_as_tuple(str(worksheet.cell_value(i, j)), 0))
else:
values.append(worksheet.cell_value(i, j))
j += 1
j = 0
i += 1
values = []
但是,我上面的代码给了我下面的错误,print(xlrd.xldate_as_tuple(str(worksheet.cell_value(i, j)), 0))
我不知道为什么。
类型错误:“str”和“float”的实例之间不支持“<”
编辑:
调试后,代码抛出错误 where worksheet.cell_value(i, j) = 43588.0
编辑2:
我删除了围绕 Date 的 str(...) 强制转换为 include:values.append(xlrd.xldate_as_tuple(worksheet.cell_value(i, j)), workbook.datemode)
但这会引发错误:
类型错误:xldate_as_tuple() 缺少 1 个必需的位置参数:'datemode'
解决方案
我认为您不应该将日期转换为字符串。注意我做了一些其他的改变:
- 使用 for 循环而不是 while 循环
- 请不要使用单字母 var 名称(例如
i
, 和j
) xldate_as_datetime
比更有意义xldate_as_tuple
请注意,如果您希望以特定格式显示日期,请尝试strftime
import xlrd
workbook = xlrd.open_workbook(file)
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows
num_cols = worksheet.ncols
values = []
for row in range(1, num_rows):
row_values = []
for col in range(num_cols):
if col == 3:
datetime_ = xldate.xldate_as_datetime(worksheet.cell_value(row, col), workbook.datemode)
row_values.append(datetime_)
else:
row_values.append(worksheet.cell_value(row, col))
values.append(row_values)
推荐阅读
- filter - 如何在 Google Analytics 4 中从分析中排除所有用户
- yolo - 带 YOLO 模型的 Cleverhans
- javascript - 我正在构建一个基于文本的 RPG。如何在房间之间导航?
- javascript - 在函数体中返回运算符机制
- reactjs - ipfs 网站在不同网关上呈现不同
- firebase - firebase 函数运行两次
- javascript - javascript react 从地图中的值设置状态
- javascript - 用数组图像填充 Raphael 对象
- typescript - 是否可以从 typescript 中的 ["foo","far"] 之类的数组创建接口
- pdf - 在 mpdf 中添加变量名以保存审阅后的 pdf