По мне - вид и так нормальный.
Если к примеру хотите перевести в секунды - делается это несложно:
import re
def to_seconds(instr: str) -> int:
FORMAT = {
'\D?(\d+)s': lambda x: x,
'\D?(\d+)m': lambda x: 60 * x,
'\D?(\d+)h': lambda x: 60 * 60 * x,
'\D?(\d+)d': lambda x: 24 * 60 * 60 * x,
'\D?(\d+)w': lambda x: 7 * 24 * 60 * 60 * x,
}
outstr = 0
for key in FORMAT:
if re.search(key, instr):
outstr += FORMAT[key](int(re.search(key, instr).group(1)))
return outstr
str1 = "3w3d12h12m40s"
print(to_seconds(str1))
2117560