python - 基于Python中的zip函数从列表中的字符串文字中提取数字
问题描述
我有一个字符串列表,以分钟和秒为单位表示时间,例如
distanceList = [0.56, 0.04, 0.56, 0.44, 0.76] #represents distances traveled
timeList = ['5m:11s', '18m:18s', '13m:35s', '8m:26s', '121m:7s'] # represents time to taken to travel
我需要提取这些数字(分钟(m)和秒(s))并转换为小时。
到目前为止,我已经实现了 zip 函数并使用了一些列表理解将数字单独提取到列表中。但是,考虑到它们是分开的并且与冒号分隔符的距离并不总是一致的,我不确定如何将它们汇总为数小时。我就是这么走的。
for a, b in zip(distanceList, timeList):
nums = [item for subitem in b for item in subitem.split() if item.isdigit()]
print nums
预期结果:表示分钟和秒的整数列表。
[[5,11],[18,18]...]
收到的结果:
['5', '1', '1', '1', '8', '8'....]
解决方案
如果“汇总为小时”仍然相关:求和timedelta
对象。
from datetime import timedelta
strings = ['5m:11s', '18m:18s', '13m:35s', '8m:26s', '121m:7s']
def sum_timestrings(strings):
min_secs = (s.split(':') for s in strings)
total = sum((timedelta(minutes=int(m[:-1]), seconds=int(s[:-1]))
for m, s in min_secs), timedelta())
return total
total = sum_timestrings(strings)
print(total) # 2:46:37
print(total.total_seconds()/3600) # 2.7769444444444447
推荐阅读
- sql-server - 循环使用动态表名和 where 子句存储过程
- php - 使用 Cron 和 swiftmailer 发送邮件
- android - 搜索显示错误项目的 ListView
- google-cloud-platform - GCP - 物联网核心监控消息
- c - SPOJ - 好斗的奶牛,“最大最小距离”术语的含义是什么?
- model-view-controller - 如何使用 ASP.Net MVC 4 使用 pingfederate 配置 SAML 身份验证
- orocrm - 如何解决 ORO-CRM - 应用程序配置不正确(消息消费者不可用)。请联系系统管理员
- python - pytest 检测是否排除标记
- ruby-on-rails - Nginx + Rails + sendfile:找不到文件
- html - 两行间距问题 - HTML 模板