从文件路径提取和修改子字符串

2021-02-25 04:55:49 发布

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

我有一个文件路径保存为filepath,格式为/home/user/filename。文件名的一些示例:

'1990MAlogfile'
'Tantrologfile'
'2003RF_2004logfile'

我需要写一些东西来将filepath转换成文件名的一部分(但我还没有将文件名保存为任何内容)。例如:

/home/user/1990MAlogfile变成{},/home/user/Tantrologfile变成{},或者{}变成{}。在

所以我需要在最后一个正斜杠之后,如果有下划线,则在下划线之前(如果没有,则在'logfile'之前),然后我需要在最后一个数字和第一个字母之间插入一个空格。然后我想将结果保存为objkey。你知道我怎么做吗?我在想我可以使用regex,但不知道在某些情况下,我将如何处理插入空格的问题。在

2条回答
网友
1楼 ·
import os, re, string
mystr = 'home/user/2003RF_2004logfile'
def format_str(str):
     end = os.path.split(mystr)[-1]
     m1 = re.match('(.+)logfile', end)
     try:
         this = m1.group(1)
         this = this.split('_')[0]
     except AttributeError:
         return None
     m2 = re.match('(.+[0-9])(.+)', this)
     try:
         return " ".join([m2.group(1), m2.group(2)])
     except AttributeError:
         return this
网友
2楼 ·

代码

def get_filename(filepath):

    import re

    temp = os.path.basename(example)[:-7].split('_')[0]

    a = re.findall('^[0-9]*', temp)[0]

    b = temp[len(a):]

    return ' '.join([a, b])


example = '/home/user/2003RF_2004logfile'

objkey = get_filename(example)

解释

导入正则表达式包

^{pr2}$

示例文件路径

example = '/home/user/2003RF_2004logfile'

/home/user/2003RF_2004logfile

获取文件名并删除

temp = example.split('/')[-1].split('_')[0]

2003RF

获取开头部分(如果开头是数字则拆分)

a = re.findall('^[0-9]*', temp)[0]

2003

拿到最后一部分

b = temp[len(a):]

RF

合并开头和结尾部分

return ' '.join([a, b])

2003 RF

相关问题