在文件名的最后部分附加日期的文件。这样的。
string = 'blablablabla_20210812.jpg'
我像这样提取数据。
string[-12:][:-4]
我想在年,月和日期之间添加'-'。我就是这样做的。
string[-12:][:-4][:4] + '-' + string[-12:][:-4][4:][:2] + '-' + string[-12:][:-4][6:]
在我看来,这似乎比读机器代码更复杂。你们能告诉我更实用的方法吗?
一个解决方案是使用正则表达式和re.sub
:
import re
s = "blablablabla_20210812.jpg"
s = re.sub(r"_(d{4})(d{2})(d{2}).", r"_1-2-3.", s)
print(s)
打印:
blablablabla_2021-08-12.jpg
您也可以将加入组的值替换为lambda
:
>>> import re
>>> string = 'blablablabla_20210812.jpg'
>>> re.sub('(d{4})(d{2})(d{2})', lambda m: '-'.join(g for g in m.groups()), string)
#output: 'blablablabla_2021-08-12.jpg'
您可以将两个索引放在一个正方形中并使用join函数:
'-'.join([string[-12:-8], string[-8:-6], string[-6:-4]])
另外,我个人更喜欢保持代码可读性。您可以先命名变量:
def extractDataInfo(string):
year, month, day = string[-12:-8], string[-8:-6], string[-6:-4]
return '-'.join([year, month, day])
您可以压缩string[-12:][:-4][:4]
到string[-12:-8]
,使其看起来更干净。代码看起来像这样:
string = 'blablablabla_20210812.jpg'
print(string[-12:-8] + '-' + string[-8:-6]+ '-' + string[-6:-4])
# 2021-08-12
或者如果你想要文本:
print(string[:-8] + '-' + string[-8:-6]+ '-' + string[-6:-4])
# blablablabla_2021-08-12
只有当你知道文件总是以:
结尾时,这个问题的一个简单的解决方案才有效。_data.extension
如果是,解决方案将是:
string = 'blablablabla_20210812.jpg'
s = string.replace("_", ".")
s = s.split(".")
data = s[1]
s[1] = data[:4] + "-" + data[4:6] + "-" + data[6:]
print(s[1]) # OUTPUT: 2021-08-12
# Taking all together:
print(s[0] + "_" + s[1] + "." + s[2]) # OUTPUT: blablablabla_2021-08-12.jpg
您也可以这样尝试:
import datetime
print(datetime.datetime.strptime(string[-12:-4],'%Y%m%d').strftime('%Y-%m-%d'))
输出:
'2021-08-12'