r根据某些规则拆分文件名?



>我有 1.5M 个文件,有 2 种模式:

"userId_page.jpg"
"date_userId_page.jpg"

我希望能够根据给定的模式将文件名拆分为 2 或 3 个部分。 我知道我可以使用:

file_name = '/2020_03_10_123456_001.jpg'
date_part, user_id, page_num = file_name.rsplit('_', 2)

如果我的文件名仅包含ID和页面:

file_name = '/12232454345234_005.jpg'
user_id, page_num = file_name.rsplit('_', 1)

我应该计算每种情况下的"_"数量并用 1 或 2rsplit吗? 还有其他更好的选择吗?

您可以使用正则表达式来匹配不同的部分,然后将它们分配给每个变量。通过使用可选组,我们可以得到一个正则表达式来匹配两个文件名模式;当没有date_part该变量将是一个空字符串时:

import re
file_name = '/2020_03_10_123456_001.jpg'
date_part, user_id, page_num = re.findall(r'(?:(w+)_)?(d+)_(d+)..*$', file_name)[0]
print(f'date={date_part}, user={user_id}, page={page_num}')
file_name = '/12232454345234_005.jpg'
date_part, user_id, page_num = re.findall(r'(?:(w+)_)?(d+)_(d+)..*$', file_name)[0]
print(f'date={date_part}, user={user_id}, page={page_num}')

输出:

date=2020_03_10, user=123456, page=001
date=, user=12232454345234, page=005

最新更新