我的文件路径以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
。有关如何做到这一点的任何想法?我以为我可以使用正则表达式,但不知道如何处理在某些情况下插入空格。
答案 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