问题遇到的现象和发生背景
自己越写越糊涂了有点,希望有人给我指点一下
问题相关代码,请勿粘贴截图
import xlrd
import re
# 打开excel文件
rbook = xlrd.open_workbook('L6外壳螺丝.xlsx')
# sheets方法返回对象列表,[<xlrd.sheet.Sheet object at 0x103f147f0>]
rbook.sheets()
# xls默认有3个工作簿,Sheet1,Sheet2,Sheet3
rsheet = rbook.sheet_by_index(0) # 取第一个工作簿
# 循环工作簿的所有行
for row in rsheet.get_rows():
yesterday_on_column = row[2] # 通电时间所在的d列
yesterday_on_value = yesterday_on_column.value # 项目名
if yesterday_on_column != '通电时间': # 排除第二行
yesterday_run_column = row[3] # 运行时间所在的列
yesterday_run_value = yesterday_run_column.value
if yesterday_run_column != '运行时间': # 排除第三行
yesterday_stop_column = row[4]# 暂停时间所在的列
yesterday_stop_value = yesterday_stop_column.value
# 打印
print(yesterday_on_value, yesterday_run_value,yesterday_stop_value) # 字符串类型
yesterday_on_time = re.split(r"[H|M|S]",yesterday_on_value) # 正则提取以后是列表类型
for i in yesterday_on_value:
print(yesterday_on_time)
# print(type(yesterday_on_time))
# # 强制类型转换为int
# yesterday_on_time[0] = int(yesterday_on_time[0])
# yesterday_on_time[1] = int(yesterday_on_time[1])
# yesterday_on_time[2] = int(float(yesterday_on_time[2]))
# print(yesterday_on_time)
# # 秒数估算一位,如果大于40秒就记为一分钟
# if yesterday_on_time[2] >= 40:
# yesterday_on_time[1] += 1
# on_time = yesterday_on_time[0] * 60 + yesterday_on_time[1]
# print(on_time)
运行结果及报错内容
通电时间 运行时间 暂停时间
2H1 M5 S 1 H23M3S 0 H4 M55S
12H10M0S 8H24M3S 1 H11M3S
11H50M0S 8 26M30S 0H8 M2S
12H10M0S 18 H16M9SI 1H8 M11S
['12', '10', '0', '']
['12', '10', '0', '']
['12', '10', '0', '']
['12', '10', '0', '']
['12', '10', '0', '']
['12', '10', '0', '']
['12', '10', '0', '']
['12', '10', '0', '']
我的解答思路和尝试过的方法
我想对列表里面所有的数字都进行正则提取,但是正则提取之后打印的话,只有一个元素,怎么能够把通电时间里另外的数字和另外两个时间里面的数字正则提取出来
我想要达到的结果
我想把通电时间,运行时间,暂停时间的数字提取出来,因为我要将单位统一成分钟,然后再写回Excel原来的位置