Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么'if string[0]==';0';:`工作,但也给出了一个错误?_Python_Excel_String_Openpyxl - Fatal编程技术网

Python 为什么'if string[0]==';0';:`工作,但也给出了一个错误?

Python 为什么'if string[0]==';0';:`工作,但也给出了一个错误?,python,excel,string,openpyxl,Python,Excel,String,Openpyxl,我是编程新手,我正在尝试做我的第一个“项目”; 该项目非常适合我的银行报告,并使用openpyxl对其进行总结 无论如何,我正在尝试处理日期,并在一个日期字符串中接收月份,这是一种工作方式,但它在输出中给了我一些奇怪的错误: **Traceback (most recent call last): File "D:/Avi...Bank/Python App/app.py", line 22, in <module> if month[0] == '0

我是编程新手,我正在尝试做我的第一个“项目”; 该项目非常适合我的银行报告,并使用openpyxl对其进行总结

无论如何,我正在尝试处理日期,并在一个日期字符串中接收月份,这是一种工作方式,但它在输出中给了我一些奇怪的错误:

**Traceback (most recent call last):
  File "D:/Avi...Bank/Python App/app.py", line 22, in <module>
    if month[0] == '0':
IndexError: string index out of range**
这是运行时错误

变量
的值间接依赖于变量

因此,每当变量
month
的值变为空字符串时,就不能访问空字符串的第0个索引

我建议你做两件事:

  • 检查
    循环的
    范围以避免逻辑错误
  • 使用异常处理来维护应用程序的正常流

  • 错误消息表示
    month
    为空。Excel将日期存储为数字,而不是字符串。它表示您到达的行中,
    month
    显示为空字符串。无法从空字符串中读取索引0。创建自己的计数器会使代码更难读取,更容易出错。使用openpyxl API来避免这种情况,例如ws.iter_行中的行(min_row=24,values_only=True):date=row[0];price=row[7]
    并使用Python datetime.strtime函数为您转换日期。嘿,非常感谢!我告诉python忽略None变量:if cell.value为None:pass如果它解决了您的用例,请接受答案
    from pathlib import PureWindowsPath
    import openpyxl as xl
    import datetime as dt
    
    wb_inputs = PureWindowsPath('D:/Avi...Inputs.xlsx')
    wb_outputs = PureWindowsPath('D:/Aviv...Outputs.xlsx')
    
    wb_inputs = xl.load_workbook(wb_inputs)
    wb_outputs = xl.load_workbook(wb_outputs)
    
    input1_sheet = wb_inputs['Input1']
    input2_sheet = wb_inputs['Input2']
    input3_sheet = wb_inputs['Input3']
    output1_sheet = wb_outputs['Output1 - Summary']
    output2_sheet = wb_outputs['Output2 - data']
    
    for row in range(23, input3_sheet.max_row + 1):
        cell = input3_sheet.cell(row, 1)
        price_for_cell = input3_sheet.cell(row, 6)
        date_cell = str(cell.value)
        month = date_cell[5:7]
        if month[0] == '0':
            print(month[1])
        else:
            print(month)