首页 > 解决方案 > 以秒为单位更改持续时间字符串

问题描述

我目前正在自动化浏览器游戏。在游戏中你可以升级东西,升级所需的时间以这样的字符串给出我: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

标签: pythonstringtime

解决方案


.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日期字符串输入在哪里。


推荐阅读