2014-11-17 6 views
-3

У меня есть список пакетов и вы хотите удалить суффиксы из определенной комбинации символов. Должен ли я использовать регулярное выражение или другие файлы, например, заменить? Окончания всех пакетов различны, потому что это версии, поэтому я не уверен, что использовать и как. Я думаю, что я должен очистить оставшиеся символы от -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] для элемента в seq]' –

+0

В чем разница между разделом и разделом? –

+0

'partition' разделяет строку на три части: часть перед разделителем, разделитель и часть после разделителя. Я подозреваю (но не тестировал), что он быстрее, чем 'split', так как ему нужно только сканировать первый экземпляр разделителя вместо всех экземпляров. – Kevin

0

via 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'] 
Смежные вопросы