这是我需要的一个例子。
假设我们有以下字符串:
str = "/home/user/folder/MyVeryLongFileName.foo"
我要对此进行多项操作:
删除路径(假设我有其长度):
str = str[path_length:]
修改扩展名(在我的情况下总是4个字符):
str = str[path_length:-4]
所以,现在我的字符串看起来像MyVeryLongFileName
现在我想将其大小限制为15个字符。 是否可以在同一个表达式中执行此操作?或者我可能必须在之前的2次操作之后这样做?
答案 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
的结果执行此操作,该结果将该部分拆分为基本文件名和路径的其余部分。然后我们可以减少剩余的字符串。我肯定会使用这些方法,因为它们更可靠。