2014-11-17 64 views
-3

我有一個包列表,並希望從特定的字符組合中刪除後綴。 我應該使用正則表達式還是其他mehotds,如替換?所有軟件包的結尾都是不同的,因爲這些都是版本,所以我不確定要使用哪個軟件以及如何使用。我想我應該從字符串中清除-0:中剩餘的字符。 什麼名單,如:刪除列表中的後綴Python

... 'znc-devel-0:1.4-1.el6.i686', 'znc-devel2-0:1.4-1.el6.x86_64' ... 

我想有:

...'znc-devel', 'znc-devel2'... 

我應該怎麼辦?

+1

提示:使用一個__loop__。 – Unihedron

+0

也許有任何例子嗎? – Dambre

回答

2

partition在「-0」上並取左邊部分。

seq = ['znc-devel-0:1.4-1.el6.i686', 'znc-devel2-0:1.4-1.el6.x86_64'] 
print [item.partition("-0")[0] for item in seq] 

結果:

['znc-devel', 'znc-devel2'] 
+0

那麼你需要使用'print [item.partition(「 - 0:」)[0]中的項目]' –

+0

拆分和分區之間的區別是什麼? –

+0

'partition'將字符串分成三部分:分隔符之前的部分,分隔符和分隔符之後的部分。我懷疑(但沒有測試過)它比'split'快,因爲它只需要掃描分隔符的第一個實例,而不是所有實例。 – Kevin

0

通過re.sub和列表理解。

>>> L = ['znc-devel-0:1.4-1.el6.i686', 'znc-devel2-0:1.4-1.el6.x86_64'] 
>>> import re 
>>> [re.sub(r'-0:.*', r'', line) for line in L] 
['znc-devel', 'znc-devel2']