从字符串中提取小时和分钟 Python

6
我有一个字符串,格式为'00:00',显示时间。它可以是任何时间。我想将小时和分钟提取到各自的变量中。

1
hour, min = '00:00'.split(':') - JRodDynamite
4个回答

16

您可能希望小时分钟为整数:

hours, minutes = map(int, "00:00".split(':'))

这是如何运作的

  1. str.split(delim) 使用 delim 作为分隔符将一个字符串 str 分割成一个列表。例如:"00:00".split(':') == ["00", "00"]
  2. map(function, data) 将一个函数 function 应用于可迭代对象 data 中的每个成员。例如:map(int, ["00","00"]) 返回一个可迭代对象,其成员为整数。
  3. a, b, c = iterable 提取 iterable 的前三个值,并将它们分别赋值给名为 abc 的变量。

5

对于解析时间,请使用datetime类:

import datetime
time = datetime.datetime.strptime('23:43', '%H:%M')
print time.hour, time.minute

3
如果它一直是相同的格式,您可以通过冒号来进行拆分
hours, minutes = "00:00".split(":")

不太理想,因为小时和分钟变量将是字符串类型。 - leggewie
@leggewie 这种情况下的正确行为是什么?提问者只是想知道如何拆分它们。从这里将它们转换为另一种类型非常简单,可以通过以下方式之一实现:分别对每个元素进行转换(例如 hours = int(hours)),使用映射函数 hours, minutes = map(int, "00:00".split(':')) 或使用列表推导式 hours, minutes = [int(x) for x in "00:00".split(':')] - Ted Klein Bergman
我只是指出你之前提出的解决方案存在一个变量为str的问题。你使用map和列表推导式的解决方案没有这个问题,因此更可取。但不要假装它们是相同的解决方案。 - leggewie
@leggewie 没有陷阱。如果你想将一个字符串分割成两个变量,那么它们当然是字符串。你所建议的更好的方式并不正确,因为它取决于使用情况。对于简单的算术运算,将它们转换为int是正确的。但如果您想做更复杂的数学运算,您可能需要将它们转换为floats。或者,如果您只是要显示它们,存储它们在文本文件中,解析/序列化它们或通过互联网发送它们,那么它们应该是字符串。所以,不,它们不是相同的解决方案,后者也不是被问到的。 - Ted Klein Bergman

1

split函数在这里非常有用:

>>> time = "11:23"
>>> hours, minutes = time.split(":")
>>> print hours
11
>>> print minutes
23

由于小时和分钟变量的类型为字符串,这并不理想。 - leggewie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接