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

时间:2014-04-11 07:51:15

标签: python string slice

这是我需要的一个例子。

假设我们有以下字符串:

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

我要对此进行多项操作:

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

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

    str = str[path_length:-4]
    

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

  3. 现在我想将其大小限制为15个字符。 是否可以在同一个表达式中执行此操作?或者我可能必须在之前的2次操作之后这样做?

3 个答案:

答案 0 :(得分:2)

如果您只想要前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

答案 1 :(得分:1)

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

>>> 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

答案 2 :(得分:1)

我会这样做:

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

splitext将文件扩展名与其余文件扩展名分开,我们对basename的结果执行此操作,该结果将该部分拆分为基本文件名和路径的其余部分。然后我们可以减少剩余的字符串。我肯定会使用这些方法,因为它们更可靠。