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"
我有多个操作要执行:
MyVeryLongFileName
如果只需要前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环境中。请随意提出改进建议,以便我们都能学习。