拆分/标识字符串末尾的数字,该数字没有固定的字符数

2024-06-23 02:59:01 发布

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

我有一组文件,在我要重命名的文件夹中。格式为:

lesson1
lesson2
.....
lesson11
lesson99
lesson100
lesson130   

在Windows中排序时,顺序是我的字符串,因此不正确(示例):

lesson1 
lesson100

我想成为(重命名):

_001_lesson
_010_lesson

如何从字符串“lesson”中捕捉/拆分结尾处的编号部分

另一个更复杂的情况是字符串不固定(如课程所示):

title abc1
title def2
title acr 3 

Tags: 文件字符串文件夹排序titlewindows格式重命名
1条回答
网友
1楼 · 发布于 2024-06-23 02:59:01

我的建议如下,使用python's re module

import re

def rename(old_name):
  # Run a Regex to find the ending number
  match = re.search('lesson(\d+)', old_name)

  # If that was a match (that should be necessary, but 
  # checking input is always a good idea)
  if match:
    # Retrieves the id and converts it to an integer
    id = int(match.group(1))

    # Gets the formatted name out
    return '_{:03d}_lesson'.format(id)

  return None

这是相当模块化的。下次要分析类似的文件名时,可以更改regex:)

网友
2楼 · 发布于 2024-06-23 02:59:01

对于固定字符串,可以使用split方法:

Number = "lesson123".split("lesson")[1] # "123"
Title  = "lesson123".split(Number)[0]   # "lesson"

对于_001_lesson您可以这样写,假设您需要在数字前面多加N个零

New_name = "_" + N*"0" + "%d_%s" %(Number, Title)

另一个例子,我知道你想抓住“title”后面的所有字符

Number = "title acr 3".split("title")[1] # " acr 3"
Title = "title acr 3".split(Number)[0]   # "title"

如果您对这些多余的空格感到恼火,可以使用stripreplace删除它们:

Clean_number = Number.strip(" ")
# or
Clean_number = Number.replace(" ", "")

相关问题 更多 >

    热门问题