如何同时剪切和限制字符串大小?

2024-04-19 04:00:40 发布

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

这是我需要的一个例子。你知道吗

假设我们有以下字符串:

str = "/home/user/folder/MyVeryLongFileName.foo"

我要对这个做多个操作:

  1. 删除路径(假设我有它的长度):

    str = str[path_length:]
    
  2. 重新设置扩展名(在我的情况下总是4个字符):

    str = str[path_length:-4]
    

    所以,现在我的字符串看起来像MyVeryLongFileName

  3. 现在我想把它的大小限制在15个字符。 可以用同样的表达方式吗?或者我可以在前两次手术后再做吗?


Tags: path字符串路径homefoo情况folderlength
3条回答

您可以使用以下命令获取文件名:

>>> print str.split('/')[-1]
MyVeryLongFileName.foo

拆下延长件,方法是:

>>> print str.split('.')[0]
/home/user/folder/MyVeryLongFileName

将文件名限制为15个字符:

>>> print str.split('/')[-1][:15]
MyVeryLongFileN

也就是说,您可以始终使用bash utils来提取这些信息。basename是获取文件的工具,dirname是获取路径的工具。有关详细信息,请参见Extract filename and extension in bash。你知道吗

如果只需要前15个字符,则可以再次对字符串进行切片,如下所示:

file_name[path_length:-4][:15]

如果您真的要处理文件名,您可能需要

>>> file_name = "/home/user/folder/MyVeryLongFileName.foo"
>>> import os
>>> print os.path.split(file_name)[1].rpartition(".")[0][:15]
MyVeryLongFileN

或:

>>> print os.path.basename(file_name).rpartition(".")[0][:15]
'MyVeryLongFileN'

另外,最好使用splitext来获得扩展,如下所示

>>> from os.path import basename, splitext
>>> print splitext(basename(file_name))[0][:15]
MyVeryLongFileN

我会这样做:

>>> from os.path import splitext, basename
>>> apath = "/home/user/folder/MyVeryLongFileName.foo"
>>> splitext(basename(apath))[0][:15]
'MyVeryLongFileN'

splitext将文件扩展名与其余部分分开,我们在basename的结果上执行此操作,该结果将部分拆分为基本文件名和路径的其余部分。然后我们可以剪断剩下的绳子。我肯定会使用这些方法,因为它们更可靠。你知道吗

相关问题 更多 >