我正在尝试根据该位置将此字符串提取为数字。这是我的代码。
string="The time is 12:30"
time = re.findall(
"[0-9]?[0-9]?:[0-9][0-9]", string)
if time != []:
T=time[0]
Min=int(T[0:2])
Sec=int(T[3:5])
我当前代码的问题是它需要灵活。例如,用户可以输入“:30”。那么我的代码根本不起作用。
我真的需要一种方法来提取“:”之前的数字(如果有的话),然后提取后面的数字。
编辑:我已经有了需要与时间函数分开的数字。我需要将该字符串转换为两个整数。
示例:2:40 是数字。我想要 Min=2 和 Sec=40。但 Min 可以是 1-60 之间的任何值,像列表一样使用字符串是行不通的
最佳答案
在冒号 (:
) 字符上拆分结果字符串,而不是使用硬编码索引
>>> m, s = time[0].split(':')
>>> Min = int(m) if m != '' else 0
>>> Sec = int(s)
请注意,您无法将空字符串 ''
转换为整数,因此分钟转换会检查这种情况并将 Min 设置为 0
。
编辑
您还可以使用括号匹配正则表达式中的组(注意 \d
是“digit”的快捷方式):
>>> match = re.search("(\d?\d?):(\d\d)", "12:30")
>>> match.groups()
('12', '30')
>>> match = re.search("(\d?\d?):(\d\d)", ":30")
>>> match.groups()
('', '30')
>>> match = re.search("(\d?\d?):(\d\d)", "no time here... 1234")
>>> print(match)
None
关于python - 如何将字符串中的数字提取到多个变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24049484/