>>> from itertools import izip, chain
>>> date = '170901'
>>> ''.join((chain.from_iterable((x if x != '0' else ' ', y) for x,y in izip(*[iter(date)]*2))))
'17 9 1'
s = '170901'
res = ''.join([' ' if i%2==0 and x=='0' else x for i, x in enumerate(s)])
print(res) # 17 9 1
您还可以从中创建一个函数,以便于使用:
def date_format(date_as_str):
return ''.join([' ' if i%2==0 and x=='0' else x for i, x in enumerate(date_as_str)])
print(date_format('170901')) # 17 9 1
print(date_format('170910')) # 17 910 does not remove the trailing ones..
转换为
datetime
对象,然后使用格式将前导空格而不是零仅应用于月份和日期:这也确保了超出天数和月份限制的值(例如42)不能被解析。你知道吗
从
datetime
对象,您可以轻松地切换到所需的任何格式,或来回切换初始字符串和后一个字符串:下面是另一个解决方案,使用一些迭代魔法来避免构建不必要的容器。但也请注意我的评论。你知道吗
你认为这是一种优雅的方式吗?你知道吗
您还可以从中创建一个函数,以便于使用:
相关问题 更多 >
编程相关推荐