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

Python 如何同时剪切和限制字符串大小?,python,string,slice,Python,String,Slice,这是我需要的一个例子 假设我们有以下字符串: str = "/home/user/folder/MyVeryLongFileName.foo" 我有多个操作要执行: 删除路径(假设我有它的长度): 重新设置扩展名(在我的示例中始终为4个字符): 所以,现在我的字符串看起来像MyVeryLongFileName 现在我想把它的大小限制在15个字符。 可以用同样的表达方式吗?或者我可以在之前的两次手术后再做吗 如果只需要前15个字符,则可以再次切片字符串,如下所示: file_name[path

这是我需要的一个例子

假设我们有以下字符串:

str = "/home/user/folder/MyVeryLongFileName.foo"
我有多个操作要执行:

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

  • 重新设置扩展名(在我的示例中始终为4个字符):

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

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


  • 如果只需要前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
    
    或:

    另外,最好使用
    splitext
    获取扩展名,如下所示

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

    如果只需要前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
    
    或:

    另外,最好使用
    splitext
    获取扩展名,如下所示

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

    您可以通过以下方式获取文件名:

    >>> 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
    是获取路径的工具。有关更多信息,请参阅。

    您可以通过以下方式获取文件名:

    >>> 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
    是获取路径的工具。有关更多信息,请参阅。

    我会这样做:

    >>> from os.path import splitext, basename
    >>> apath = "/home/user/folder/MyVeryLongFileName.foo"
    >>> splitext(basename(apath))[0][:15]
    'MyVeryLongFileN'
    
    splitext
    将文件扩展名与其他扩展名分开,我们根据
    basename
    的结果执行此操作,该结果将部分拆分为基本文件名和路径的其余部分。然后我们可以把剩下的绳子剪断。我肯定会使用这些方法,因为它们更可靠。

    我会这样做:

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

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

    您将其限制为15是什么意思?只允许前15个字符?您可能希望导入os.path而不是字符串操作。-特别是你说的限制在15岁是什么意思?只允许前15个字符?您可能希望导入os.path而不是字符串操作。-特别是我不明白为什么你建议使用bash的
    basename
    dirname
    (当OP从来没有提到bash,也没有用标签标记问题)而你的python代码没有使用它们(因为它们可以作为
    os.path.basename
    os.path.dirname
    )。对于这个问题,你的答案肯定不如其他所有答案,这表明问题的解决方案不好(因为它是特定于操作系统的,在某些情况下会失败)。@Bakuriu我故意在额外的信息上方加上一个
    ,因为这是一种不同的方法。我同意还有其他的方法,甚至更好,但是有一个带有普通斜杠的路径
    /
    会让人觉得我们处在一个*NIX环境中。请随意提出改进建议,以便我们都能学习。我不明白为什么您建议在python代码不使用它们时使用bash的
    basename
    dirname
    (当OP从未提到bash,也没有用标签标记问题时)(因为它们可以作为
    os.path.basename
    os.path.dirname
    ). 对于这个问题,你的答案肯定不如其他所有答案,这表明问题的解决方案不好(因为它是特定于操作系统的,在某些情况下会失败)。@Bakuriu我故意在额外的信息上方加上一个
    ,因为这是一种不同的方法。我同意还有其他的方法,甚至更好,但是有一个带有普通斜杠的路径
    /
    会让人觉得我们处在一个*NIX环境中。请随意提出改进建议,以便我们都能学习。