|
发表于 2024-7-3 00:51:28
|
显示全部楼层
- from datetime import datetime
- import openpyxl
- def isSameDate(x: str, y: str) -> bool:
- '''
- x = '2023/11/3-2023/11/11'
- y = '2023/11/11-2023/11/24'
- '''
- f = lambda z: datetime.strptime(z, '%Y/%m/%d')
- date_x, date_y = x.split('-'), y.split('-')
- return f(date_x[-1]) == f(date_y[0]) or f(date_x[0]) == f(date_y[-1])
- def getData(p: str='./data.xlsx', r: int=0 , c: str='', isTitle: bool=True) -> list:
- '''
- p = 'D:/data.xlsx' # str 填写Excel表格路径
- r = 1 # int 填写日期在第几行,填写了行就不要再填写列
- c = 'A' # str 填写日期在第几列,填写了列就不要再填写行
- isTitle = True # bool 填写是否含有表头,是为True否为False
- '''
- sheet = openpyxl.load_workbook(p).active
- if r and c:
- return []
- elif r:
- data = sheet[r]
- elif c:
- data = sheet[c]
- else:
- return []
- res = [d.value for d in data]
- return res[1:] if isTitle else res
-
- if __name__ == '__main__':
- a = '2023/11/3-2023/11/11'
- b = '2023/11/11-2023/11/24'
- c = '2023/11/24-2023/12/21'
- print(isSameDate(a, b))
- print(isSameDate(b, c))
- print(isSameDate(a, c))
- path = 'data.xlsx'
- data_1 = getData(p=path, r=1) # 读取表格中(有表头)第1行的数据
- data_A = getData(p=path, c='A', isTitle=False) # 读取表格中(无表头)第A列的数据
-
- for i1 in range(len(data_1)-1):
- a, b = data_1[i1], data_1[i1+1]
- print(1, a, b, isSameDate(a, b))
-
- for iA in range(len(data_A)-1):
- a, b = data_A[iA], data_A[iA+1]
- print('A', a, b, isSameDate(a, b))
复制代码 |
|