Python不使用Datetime将YYYYMMDD字符串转换为YYYY-MM-DD字符串

Python不使用Datetime将YYYYMMDD字符串转换为YYYY-MM-DD字符串,python,string,datetime,Python,String,Datetime,如何转换字符串,例如: '20190501' '2019-05-01' 添加到字符串,例如: '20190501' '2019-05-01' 不首先转换为datetime,例如: from datetime import datetime datetime.strptime('20190501', '%Y%m%d').strftime('%Y-%m-%d')) 上面的代码可以工作,但是因为我以字符串开头和结尾,所以在这个过程中似乎没有必要使用datetime。我可以直接转换字符串吗?您

如何转换字符串,例如:

'20190501'
'2019-05-01'
添加到字符串,例如:

'20190501'
'2019-05-01'
不首先转换为datetime,例如:

from datetime import datetime
datetime.strptime('20190501', '%Y%m%d').strftime('%Y-%m-%d'))

上面的代码可以工作,但是因为我以字符串开头和结尾,所以在这个过程中似乎没有必要使用
datetime
。我可以直接转换字符串吗?

您可以切片和格式化

>>> date = '20190501'
>>> newdate = "{}-{}-{}".format(date[:4],date[4:6],date[6:])
>>> newdate
'2019-05-01'

如果格式始终为YYYYMMDD,则可以通过以下方式获取术语进行转换:

s="YYYYMMDD"
s=s[:4]+"-"+ s[4:6]+"-"+s[6:]

如果您知道格式是固定的,那么使用字符串切片就很简单了

d = '20190501'
print(d[0:4] + '-' + d[4:6] + '-' + d[6:8])
试试这个:

before = '20190501'
print('before:', before)
after = ''.join((before[:4],'-',before[4:6],'-',before[6:]))
print('after:', after)

可以按如下方式使用字符串索引

旧_日期='20200505'

新日期=旧日期[:4]+'-'+旧日期[4:6]+'-'+旧日期[6:8]

打印(新日期)


2020-05-05

如果您不想出于任何原因使用日期时间;您必须a)确保输入始终有效b)然后可以简单地执行字符串操作,如
'{}-{}-{}'.format(输入日期[0:4],输入日期[4:6],输入日期[6:8])
假设
输入日期
是有效的输入日期字符串。转换为日期时间有什么问题?它免费为您提供额外的数据验证。它只是一个需要导入的额外模块,所以我想知道是否有更简单的解决方案。然而,关于数据验证,这是一个很好的观点。