Czy istnieje pythonic sposób zrobić to, co robi metoda str.strip()
, z wyjątkiem wszystkich wystąpień, a nie tylko tych na początku i końcu ciągu?Usunięcie wszystkich wystąpień kilku znaków z ciągu znaków
Przykład:
>> '::2012-05-14 18:10:20.856000::'.strip(' -.:')
>> '2012-05-14 18:10:20.856000'
Chcę
>> '::2012-05-14 18:10:20.856000::'.crazy_function(' -.:')
>> '20120514181020856000'
Czy Python dostarcza mi wbudowany crazy_function
???
Mogę łatwo zrobić to programowo, ale chcę wiedzieć, czy jest na to wbudowany. Nie można znaleźć. Dziękuję za pomoc.
Wolę wbudowane rozwiązanie takiego rozwiązania nad napisanym przez Nick Craig-Wood. Ale zastanawiam się: pod względem wydajności, co jest lepsze? Mogę się mylić, ale ta funkcja "tłumacz" prawdopodobnie korzysta z funkcji regexp. – Francisco
@Francisco: Sądzę, że istnieją dwie różne funkcje tłumaczenia. Wersja 3-arugmentowa działa z _ sekwencji bajtów_, używa tablicy translacji, która szybko się świeci. Wersja unicode działa na _strings_, zastępuje znaki jeden po drugim i jest tak samo powolna jak regexp, jeśli nie wolniejsza. Nadal używam wyrażeń regularnych dla twojego problemu, ponieważ mieszanie _strings_ i _byte sequence_ nigdy nie jest dobrym pomysłem, nawet w python2. – georg
@ thg435: W moim problemie konkretnie wersja bajtowa jest w porządku. Tworzę kody identyfikacyjne oparte na str (datetime.datetime.now()) i dodaje do niego dodatkowy kawałek łańcucha. Tak więc, unicode nie stanowi dla mnie problemu. – Francisco