日期无法格式化,报错

日期无法格式化,报错

#打印成列表形式
for rowx in range( 7,35,1 ):
#    for colx in range( 0,8,1 ):  #尝试自定义列数,失败,语法不对,老师没教
    tmp_row_val = sh.row_values(rowx)
    if rowx < 1 :  
        continue  
    tmp_date = xlrd.xldate_as_datetime( tmp_row_val[7],0 ).strftime("%Y-%m-%d")  
    问题描述:无法格式化日期,报错
    tmp_row_val[7] = tmp_date  问题描述:无法格式化日期,报错
    print(tmp_row_val)
    
    报错信息:
    Traceback (most recent call last):
  File "D:\李健\Python\python_work\all_tool\读取表格\Excel\excel_xlrd.py", line 35, in <module>
    tmp_date = xlrd.xldate_as_datetime( tmp_row_val[7],0 ).strftime("%Y-%m-%d")  #无法格式化日期,报错
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\李健\Python\python_work\venv\Lib\site-packages\xlrd\xldate.py", line 144, in xldate_as_datetime
    if xldate < 60:
       ^^^^^^^^^^^
TypeError: '<' not supported between instances of 'str' and 'int'


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
麦兜搞_IT 2023-08-21 16:59:25

出行日期列的是索引是3,不是7

好帮手慕小猿 2023-04-04 16:18:36

同学,你好!报错提示if 条件中的比较对象类型不统一,无法比较。可将144行的xldate变量使用int()强制转换为int 类型,再进行比较。


if int(xldate)<60:

祝学习愉快~

  • 老师你好,按照你的方法修改后,报错如下:

    Traceback (most recent call last):

      File "D:\李健\Python\python_work\all_tool\读取表格\Excel\读取excel.py", line 35, in <module>

        tmp_date = xlrd.xldate_as_datetime( tmp_row_val[7],0 ).strftime("%Y-%m-%d")  #无法格式化日期,报错

                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

      File "D:\李健\Python\python_work\venv\Lib\site-packages\xlrd\xldate.py", line 144, in xldate_as_datetime

        if int(xldate) < 60:

           ^^^^^^^^^^^

    ValueError: invalid literal for int() with base 10: '发行日期'


    2023-04-04 18:10:35
  • 同学,你好!老师这边调试是可以的,同学看下xls 文件,日期时间列的类型选择是否正确,是否选择了日期,再看下单元格中数据是否都是正确的

    https://img1.sycdn.imooc.com//climg/642bffc9094d673c06550389.jpg

    https://img1.sycdn.imooc.com//climg/642c005909a4d33512230812.jpg

    参考代码:

    import xlrd,datetime
    book=xlrd.open_workbook("3_2.xls")
    sh=book.sheet_by_index(0)
    for rowx in range(7,17,1 ):
    #    for colx in range( 0,8,1 ):  #尝试自定义列数,失败,语法不对,老师没教
        tmp_row_val = sh.row_values(rowx)
        if int(rowx) < 1 :
            continue
        tmp_date = xlrd.xldate_as_datetime(tmp_row_val[0], 0).strftime("%Y-%m-%d")
        tmp_row_val[0]= tmp_date
        print(tmp_row_val)

    祝学习愉快~


    2023-04-04 18:48:17
  • 老师,我完全按照你的代码来运行,还是报错,所以我找不到原因。之前代码也是完全按照视频里老师的讲解写的代码,但是报错。

    2023-04-04 20:24:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师