我有一个表示日期的字符串,例如:yymmdd(例如,2017年9月1日的170901),从datetime对象获取。
我想用空格替换每个字段的前导零。str.replace()不会这样做,因为它也会替换后面的零。
在字符串中用一个字符替换另一个字符,但只在某些位置(在本例中是在字符串的偶数索引中)的python方法是什么?

最佳答案

转换为datetime对象,然后使用格式将前导空格(而不是零)仅应用于月份和日期:

from datetime import datetime

s = '170901'
s = '{dt:%y}{dt.month:2d}{dt.day:2d}'.format(dt=datetime.strptime(s, '%y%m%d'))
print(s)
#17 9 1

这也确保了超出天和月限制的值(例如42)不能被解析。
datetime对象中,您可以轻松地切换到所需的任何格式,或前后切换初始字符串和后一字符串:
>>> '{dt:%y}{dt.month:02d}{dt.day:02d}'.format(dt=datetime.strptime(s, '%y%m%d'))
'170901'
>>> '{dt:%y} {dt:%b} {dt.day:2d}'.format(dt=datetime.strptime(s, '%y%m%d'))
'17 Sep  1'

关于python - 仅在某些位置替换代表日期的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45996363/

10-14 14:22