Python抓取两个特定字符之间的子字符串

2024-09-29 01:21:18 发布

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

我有一个包含数百个文件的文件夹,名为:

"2017_05_S2B_7VEG_20170528_0_L2A_B01.tif"

公约: year_month_ID_zone_date_0_L2A_B01.tif"_0_L2A_B01.tif""zone"永不改变)

我需要的是遍历每个文件,并根据它们的名称构建一个路径,以便下载它们。 例如:

name = "2017_05_S2B_7VEG_20170528_0_L2A_B01.tif"
path = "2017/5/S2B_7VEG_20170528_0_L2A/B01.tif"

路径约定需要是:path = year/month/ID_zone_date_0_L2A/B01.tif

我想做一个循环,每次遇到"_"字符时将字符串“剪切”成几个部分,然后按正确的顺序缝合不同的部分以创建路径名。 我试过了,但没用:

import re

filename = 
"2017_05_S2B_7VEG_20170528_0_L2A_B01.tif"

try:
    found = re.search('_(.+?)_', filename).group(1)
except AttributeError:
    # _ not found in the original string
    found = '' # apply your error handling

我如何在Python上实现这一点


Tags: 文件path路径reidzonedatefilename
3条回答

请尝试以下代码段

filename = "2017_05_S2B_7VEG_20170528_0_L2A_B01.tif"
found = re.sub('(\d+)_(\d+)_(.*)_(.*)\.tif', r'\1/\2/\3/\4.tif', filename)
print(found) # prints 2017/05/S2B_7VEG_20170528_0_L2A/B01.tif

不需要正则表达式——只需使用split()

filename = "2017_05_S2B_7VEG_20170528_0_L2A_B01.tif"
parts = filename.split("_")

year = parts[0]
month = parts[1]

由于您只有一个分隔符,您也可以简单地使用Python内置的拆分函数:

import os

items = filename.split('_')
year, month = items[:2]
new_filename = '_'.join(items[2:])

path = os.path.join(year, month, new_filename)

相关问题 更多 >