从Python列表中删除后缀

从Python列表中删除后缀,python,regex,Python,Regex,我有一个包列表,希望从特定的字符组合中删除后缀。 我应该使用regex还是其他mehotd,比如replace?所有软件包的结尾都是不同的,因为它们是不同的版本,所以我不确定使用哪一个以及如何使用。我想我应该清除字符串中-0:中的剩余字符。 清单是什么样的: ... 'znc-devel-0:1.4-1.el6.i686', 'znc-devel2-0:1.4-1.el6.x86_64' ... 我想要的是: ...'znc-devel', 'znc-devel2'... 我该怎么做?通过r

我有一个包列表,希望从特定的字符组合中删除后缀。 我应该使用regex还是其他mehotd,比如replace?所有软件包的结尾都是不同的,因为它们是不同的版本,所以我不确定使用哪一个以及如何使用。我想我应该清除字符串中-0:中的剩余字符。 清单是什么样的:

... 'znc-devel-0:1.4-1.el6.i686', 'znc-devel2-0:1.4-1.el6.x86_64' ...
我想要的是:

...'znc-devel', 'znc-devel2'...
我该怎么做?

通过re.sub和list理解

>>> 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']
分区在-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']

提示:使用循环。然后您需要使用print[item.partition-0:[0]for item in seq]拆分和分区之间的区别是什么?分区将字符串分为三部分:分隔符前的部分、分隔符和分隔符后的部分。我怀疑但还没有测试它比split更快,因为它只需要扫描分隔符的第一个实例,而不是所有实例。