2016-08-04 54 views
0

我想從一個已經存在的數組中創建一個新數組,其中陣列中的所有項目都有一個模式。如何從一個數組中的項目中刪除模式

例如

my_array=['A_1.gi.kl','BC_1.gi.kl','FGKX_1.gi.kl'] 

我要的是一個功能,可以自動使

my_new_array=['A','BC','FGKX'] 

我怎樣才能做到這一點很容易?數組中的結果項不具有相同的長度。

回答

2

使用split與理解:

my_array = ['A_1.gi.kl', 'BC_1.gi.kl', 'FGKX_1.gi.kl'] 
my_new_array = [item.split('_')[0] for item in my_array] 
+2

你可以使用.replace只是做字符串替換,而不是創建一個新的數組(在你的列表理解)。 –

0

定義後綴:

>>> suffix = '_1.gi.kl' 

然後就由後綴分裂:

>>> [item.split(suffix)[0] for item in my_array] 
['A', 'BC', 'FGKX'] 
>>> 
+1

如果你打算使用一個固定的後綴,你也可以按照該後綴的長度截短每個字符串:'suffix = len('_ 1.gi.kl'); [項目[: - 後綴]爲my_array中的項目]'。 – TigerhawkT3

1

你可以得到元素達到一定的字符通過使用list.index如果你的所有元素都有這個角色(就像你擁有的那樣)離子)

[v[:v.index('_')] for v in my_array] 
['A', 'BC', 'FGKX']