You have to extract a portion of the file name as follows:
- Assume it will start with date represented as long number
- Followed by an underscore
- You'll have then a filename with an extension
- it will always have an extra extension at the end
Inputs:
1231231223123131_FILE_NAME.EXTENSION.OTHEREXTENSION
1_This_is_an_otherExample.mpg.OTHEREXTENSIONadasdassdassds34
1231231223123131_myFile.tar.gz2
Outputs
FILE_NAME.EXTENSION
This_is_an_otherExample.mpg
myFile.tar
我的解决方案:
for i in file_name:
if not i.isdigit():
ind=file_name.index(i)
file_name=file_name[ind+1:]
break
file_list=file_name.split('.')
file_list.pop()
return '.'.join(file_list)
方法二:
for i in file_name:
if not i.isdigit():
ind=file_name.index(i)
file_name=file_name[ind+1:]
break
file_name=file_name[::-1]
for j in file_name:
if j=='.':
#这里虽然将后面那个点找到了,但是获取下标时,是从前找,所以找到前面的那个了
#将字符串颠倒过来,再用此法就行
ind2=file_name.index(j)
file_name=file_name[ind2+1:]
break
return file_name[::-1]
看一下别人的解决
class FileNameExtractor:
@staticmethod
def extract_file_name(fname):
return fname.split('_', 1)[1].rsplit('.', 1)[0]
从第一个“_"分割,之后rsplit(".',1)是从右开始分割,且只分割一次
方法二:
class FileNameExtractor:
def extract_file_name(f):
return f[f.find("_")+1:f.rfind(".")]
find("_")的下标加1,rfind(".")从右边找第一个.的下标,然后直接进行字符串切割。