2014-11-17 66 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']