extract file name

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(".")从右边找第一个.的下标,然后直接进行字符串切割。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值