Заметка начинающим, которые часто сталкиваются с подобной непоняткой.
Ситуация следующая, есть список файлов:
names = [
'image.bmp',
'second.txt.bkp',
'data.db',
'.config.cfg',
'file.ext.bkp'
]
И мы хотим убрать у них окончание ".bkp".
Не знаю зачем, пример довольно надуманный) Но суть он показывает, а это главное.
Те, кто еще не очень знаком с библиотекой os.path или pathlib, вероятно решат обработать имена как строки. И тут вполне подойдет метод строки strip().
Что делает этот метод? Он отрезает указанные символы по обеим сторонам строки. Если ничего не указать, то убирает невидимые символы (пробелы, табуляции и переносы строк).
В нашем случае будет выглядеть вот так:
>>> name.strip('.bkp')
То есть просим удалить строку '.bkp' по краям имени файла, если таковая есть.
Можно применить аналогичный метод rstrip(), чтобы отрезать только справа, но для этого примера используем обычный.
>>> for name in names:
>>> print(name.strip('.bkp'))
image.bm
second.txt
data.d
config.cfg
file.ext
Хм, что-то не то с нашими именами! Что случилось??? Видим нежелательное переименование в именах, где и близко не было указанной строки '.bkp'
А дело всё в том, что данный метод ищет не указанную строку, а указанные символы, и не важно в каком порядке.
Для метода strip() строка '.bkp' это не паттерн для поискаа список символов. Потому он отрезал симовол 'p' от '.bmp' и удалил точку из файла '.config.cfg'.
Как тогда правильно заменить именно паттерн? Для начинающего можно посоветовать метод строки replace(), который как раз использует для замены указанную строку целиком. В нашем примере заменим её на пустую строку.
>>> for name in names:
>>> print(name.replace('.bkp', ''))
image.bmp
second.txt
data.db
.config.cfg
file.ext
Уже лучше, но помните, это лишь пример про strip(). Для работы с именами файлов есть способы и более "правильные", дающие однозначно верный результат. Я взял файлы только в качестве примера. Даже replase() тут может сделать не то что ожидаем.
Просто впредь будьте внимательны с этим strip().
#basic
¡¡¡LA FIEBRE AMARILLA HA VUELTO!!!
▪️ Habrá dos cabezas de serie Nº7/Nº8 (Lakers en el oeste y Miami en el este) en las finales de conferencia de una misma temporada por PRIMERA VEZ en TODA la historia de la #NBA.
▪️ Lakers es el SEGUNDO equipo del oeste que llega a las finales… https://t.co/BBQT90Jnivhttps://t.co/26DgtEcEl5
SAC 100-120 GSW (FT)
▪️ Golden State Warriors es el primer vigente campeón en TODA la historia de la #NBA que supera la primera ronda de los playoffs ganando un séptimo partido fuera de casa.
▪️ Los Warriors han ganado un séptimo partido fuera de casa por TERCERA vez en su… https://t.co/pUhVvpterC
Temporadas en las que Detroit Pistons fue el peor equipo de la #NBA 1965-66 (tardaron 23 años en volver a ser campeones) 1979-80 (tardaron 9 años en volver a ser campeones) 2022-23 Temporadas en las que San Antonio Spurs fue el peor equipo del oeste: 2022-23
🏀🇺🇸NBA
El épico nepotismo de LeBron James marca el inicio de la NBA#NBA
La NBA comienza en la madrugada del miércoles (hora española) y ya son toneladas de tinta las que han corrido en las últimas semanas sobre la mejor liga de baloncesto del mundo. Son los Boston Celtics, actuales campeones y equipo más laureado de la competición con 18 anillos, los principales protagonistas de la temporada 2024-25 por su favoritismo para repetir éxito. También los New York Knicks, que tras fichar al ala pívot Karl Anthony Towns pretenden romper la maldición de 51 años sin hacerse con la corona. Incluso los Dallas Mavericks de Luka Doncic levantan extensa expectación después de llegar a las finales de la última edición y haber adquirido a Klay Thompson, uno de los emblemas de la última dinastía de la competición, los Golden State Warriors.
LeBron James será el primer jugador de la historia de la liga en compartir vestuario con su hijo, Bronny James. La estrella de Los Angeles Lakers, tras ganar cinco anillos con cuatro equipos diferentes (dos con los Miami Heat, uno con los Cleveland Cavaliers y el último con los Lakers), buscaba un último desafío legendario, la última frontera. Y dado que tuvo al primero de sus retoños con tan solo 19 años (ahora tiene 39), optó por el nepotismo.
Una realidad que se consumó el pasado julio, cuando el jefe del clan James prolongó su relación con los californianos dos años a cambio de más de 100 millones de dólares y, a cambio, los Lakers seleccionaron en el Draft a su hijo en la posición 55, cifra reservada a jugadores a los que no se les intuye un sólido recorrido en la NBA. El aquelarre era una realidad, padre e hijo compartirían vestuario y jugarían en uno de los equipos más icónicos de la historia del baloncesto.
En uno de los primeros partidos de Bronny James con los Lakers en la liga de verano, competición de pura pretemporada en la que ni siquiera están presentes los mejores jugadores de cada franquicia, las cámaras captaron a Jaylen Brown, estrella de los Celtics, confesar lo siguiente: «No creo que Bronny tenga nivel para ser un profesional». Pidió disculpas el MVP de las últimas finales de la NBA, pero lo cierto es que el de Georgia abrió la veda de los ataques hacia el joven Bronny.
https://www.abc.es/deportes/baloncesto/epico-nepotismo-lebron-james-marca-inicio-nba-20241021042251-nt.html
🏆@Info288_deportes