python .rstrip 移除了一个多余的字符

11 投票
2 回答
4711 浏览
提问于 2025-04-16 19:21

我想从日期中去掉秒数:

>>> import datetime
>>> test1 = datetime.datetime(2011, 6, 10, 0, 0)
>>> test1
datetime.datetime(2011, 6, 10, 0, 0)
>>> str(test1)
'2011-06-10 00:00:00'
>>> str(test1).rstrip('00:00:00')
'2011-06-10 '
>>> str(test1).rstrip(' 00:00:00')
'2011-06-1'

为什么'10'后面的0被去掉了呢?

2 个回答

7

rstrip 是用来去掉字符串末尾的字符的,它接受一组字符(虽然你可以传入任何可迭代的东西,比如你例子中的 str),而不是单一的字符串。

顺便说一下,datetime.datetime 的字符串表示方式并不是固定的,你不能完全依赖它。相反,你可以在 isoformat 方法上使用 date 或者 strftime 方法:

>>> import datetime
>>> test1 = datetime.datetime(2011, 6, 10, 0, 0)
>>> test1.date().isoformat()
'2011-06-10'
>>> test1.strftime('%Y-%m-%d')
'2011-06-10'
12

str.rstrip() 这个方法并不是用来删除一个确切的字符串,而是会删除字符串中出现的所有字符。因为你知道要删除的字符串的长度,所以你可以简单地使用

str(test1)[:-9]

或者更好的方法是

test1.date().isoformat()

撰写回答