В Python обычно есть несколько способов сделать это.
Но сначала strip
работает не так, как вы думаете.
>>> flnm = '2011.09.27 23:49 2'
>>> flnm.strip('2') # notice that strip only affects the ends of the string
'011.09.27 23:49 '
Вы могли быприсоединяйтесь к персонажам, которые не отклонены.
rejected = ' :.'
flnm = ''.join(c for c in flnm if c not in rejected)
Или просто объединить цифры.
flnm = ''.join(c for c in flnm if c.isdigit())
Или объединить несколько вызовов в string.replace.
flnm = flnm.replace(' ','').replace('.','').replace(':','')
Или использовать re.sub
.
import re
flnm = re.sub('\D', '', flnm)
Поскольку строки неизменяемы, убедитесь, что вы присваиваете результат обратно flnm
.
Редактирование:
Еще больше способовсделай это!
Используя reduce
(из ответа Ивана):
rejected = ' :.'
flnm = reduce(lambda a, d: a.replace(d,''), rejected, flnm)
Используя translate
(из ответа Oxtopus):
rejected = ' :.'
flnm = flnm.translate(None, rejected)
Я предпочитаю использовать у Oxtopus translate
, так как это наиболее прямолинейно.