在numpy中使用rstrip删除文件扩展名

时间:2019-04-06 08:18:05

标签: python numpy

假设我有一个歌曲名称列表

songlist = np.array(['1.mp3', '2.mp3','3.mp3'])

根据numpy文档,有一个有用的char函数,称为rstrip

  

对于自身中的每个元素,返回一个带有后缀字符的副本   删除。

由于文件扩展名恰好位于字符串的结尾,因此我尝试使用此rstrip删除文件扩展名

np.core.char.rstrip(songlist,'.mp3')

但是,它给了我以下输出

  

array(['1','2',''],dtype ='

我在这里做错了什么?如何使用rstrip函数正确删除文件扩展名?

3 个答案:

答案 0 :(得分:2)

我认为numpy不是处理字符串的最佳工具。我会亲自使用本机python。

songlist = np.array(['1.mp3', '2.mp3','3.mp3'])

# extract the part you want with split()
songlist = [s.split('.')[0] for s in songlist]
# could also just slice
# songlist = [s[:-4] for s in songlist]

答案 1 :(得分:2)

如果要使用numpy字符串函数:

s = np.array([np.str.rpartition(s,'.mp3')[0] for s in songlist])

您还可以查看partitionreplace

答案 2 :(得分:1)

如@dgumo所述,rstrip除去字符而与它们的顺序无关。要仅删除“ .mp3”,

[song.replace('.mp3' , '') for song in songlist]

或者,如果您确定字符串以.mp3结尾

[song[:-4] if song.endswith('.mp3') else song for song in songlist]