从字符串中提取一些字母并在Python中添加连字符

2024-09-30 22:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

文件名的最后一部分附有日期的文件。像这样

string = 'blablablabla_20210812.jpg'

我这样提取数据

string[-12:][:-4]

我想在年、月和日期之间加上“-”。我就是这样做的

string[-12:][:-4][:4] + '-' + string[-12:][:-4][4:][:2] + '-' + string[-12:][:-4][6:]

在我看来,这似乎比阅读机器代码更复杂。你们能告诉我哪些方法更实用吗


Tags: 文件数据方法代码机器string文件名jpg
3条回答

您可以将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

一种解决方案是使用正则表达式和^{}

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'

相关问题 更多 >