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

时间:2017-09-15 01:55:23

标签: python regex

我的文件路径以filepath的形式保存为/home/user/filename。文件名可能是的一些例子:

'1990MAlogfile'
'Tantrologfile'
'2003RF_2004logfile'

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

/home/user/1990MAlogfile变为'1990 MA'/home/user/Tantrologfile变为'Tantro',或/home/user/2003RF_2004logfile变为'2003 RF'

所以我需要在最后一个正斜杠之后和下划线之前的所有内容(如果它不存在)之前(或者如果不是'logfile'之前),那么如果有数字我需要在最后一个数字和第一个字母之间插入一个空格当下。然后我想将结果保存为objkey。有关如何做到这一点的任何想法?我以为我可以使用正则表达式,但不知道如何处理在某些情况下插入空格。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

代码

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)

解释

导入正则表达式包

import re

示例文件路径

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