python - 以秒为单位更改持续时间字符串
问题描述
我目前正在自动化浏览器游戏。在游戏中你可以升级东西,升级所需的时间以这样的字符串给出我:2d 4h 20m 19s 我想比较不同的升级时间,所以我想把时间变成秒,所以它比较容易。
我的想法是查看给出的时间,然后获取该字母的索引,查找字母前面的数字,但我认为这有点太多的代码行,特别是如果我必须做不止一个时间。
我的想法是这样的:
if "d" in string:
a = string.index("d")
if a == 2:
b = string[a-2] * 10 + string[a-1]
seconds = b * 86400
解决方案
.split()
您可以通过给您一个列表来拆分字符串:['2d', '4h', '20m', '19s']
现在我们可以分别做每个部分。
我们还可以使用转换字典来根据后缀给我们使用什么数字:
mod = {"d": 60*60*24, "h": 60*60, "m": 60, "s": 1}
然后我们只需将列表相加,将每个列表的数量与上面的 mod 相乘:
sum(int(value[:-1]) * mod[value[-1]] for value in ds.split())
这相当于:
total = 0
for value in ds.split():
number = int(value[:-1]) # strip off the units and convert the number to an int
unit = value[-1] # take the last character
total += number * mod[unit]
ds
日期字符串输入在哪里。
推荐阅读
- php - API Platform php Docker 容器不断随机停止,并且无法正常重启
- python - 绘制实时传感器数据时,PyQtGraph 停止更新并冻结
- c++ - StretchBlt 绘制空白位图
- c++ - GRPC/C++ - 服务器只从双向流中读取第一条消息
- python - Get value from a line intersecting 0.0 level
- node.js - 错误离子服务确实弹出未处理的异常:NGCC失败
- c# - 如何从格式不同的字符串中提取数字?
- c# - 检查网格中瓷砖的相邻性
- c# - Web 服务器上的 HRESULT 0x80070057 - asp.net
- mysql - 为什么我在使用 AES_DECRYPT 时收到没有更多详细信息的错误?