2011-06-10 30 views
6

我尝试从最新删除秒:蟒蛇.rstrip删除一个额外的字符

>>> 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' 

为什么在0“10”的末端被删除?

回答

7

str.rstrip()不会删除一个确切的字符串 - 它消除出现的字符串中的所有字符。既然你知道该字符串删除的长度,你可以简单地使用

str(test1)[:-9] 

甚至更​​好

test1.date().isoformat() 
+0

权。 >>> str(test1).rstrip('0:') '2011-06-10' >>> str(test1).rstrip('0:') '2011-06-1'' – zzzz 2011-06-10 21:09:39

7

rstrip需要一个被删除的字符集(尽管参数可以是任何可迭代的,例如str),而不是单个字符串。

顺便说一句,datetime.datetime的字符串表示形式不是固定的,你不能依赖它。相反,在datestrftime使用isoformat

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