Заметка начинающим, которые часто сталкиваются с подобной непоняткой.
Ситуация следующая, есть список файлов:
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
19.04.26 Сумы - Мирополье
Позиционные боевые действия в Сумской зоне безопасности.
ВС РФ продвинулись на 1 км от демаркационной линии к Мирополью с восточного направления. Передовая позиция ВС РФ под огнём ВСУ.
1:26 50.993179,35.316483
Источник 21+
Геопривязка
#ru
18.04.26 Краснополье - Таратутино
Позиционные боевые действия в Сумской зоне безопасности.
Передовая позиция ВС РФ в Таратутино подверглась обстрелу ВСУ. ВС РФ продвинулись в Сумской области на 3,5 км и достигли новых позиций в населённом пункте.
0:43 50.728385, 35.375816
Источник 21+
Геопривязка
#ru
16.03.26 Северск - Резниковка
Активные боевые действия в районе Северска.
Пехотная атака ВС РФ в Резниковке. Штурмовая группа зачищает позицию ВСУ в жилой застройке и увеличивает зону контроля на 700 метров.
48.838569,37.977290
Источник https://t.me/OMSBr_123/1754
Геопривязка
#ru
13.04.26 Великая Новосёлка - Александроград
Активные боевые действия в районе Великой Новосёлки.
Военнослужащие ВС РФ занимают новые позиции под огнём противника на рубеже Искра - Александроград. Увеличение зоны контроля ВС РФ на 2,5 км по фронту на левом берегу реки Волчья.
0:26 48.010070,36.619011
Источник 21+
Геопривязка
#ru
12.04.26 Сумы - Мирополье
Позиционные боевые действия в Сумской зоне безопасности.
Военнослужащие ВС РФ попали под обстрел ВСУ
западнее посёлка Мирополье. ВС РФ продвинулись в Сумской области увеличив зону контроля до 3 км от демаркационной линии.
51.037774, 35.344966
Источник 21+
Геопривязка
#ru
11.04.26 Константиновка - Долгая Балка
Позиционные боевые действия в районе Горловки.
Передовая позиция ВС РФ в жилой застройке Долгой Балки под огнём дронов ВСУ. ВС РФ продвинулись на 1 км к северу от Степановки и заняли новые позиции в южной части посёлка Долгая Балка.
0:14 48.481047, 37.607169
Источник 21+
Геопривязка
#ru
11.04.26 Краснополье - Новодмитровка
Позиционные боевые действия в Сумской зоне безопасности.
Штурмовые подразделения ВС РФ продвинулись более 4,5 км в направлении на Краснополье и заняли новые позиции в восточной части Новодмитровки. Передовая позиция ВС РФ в жилой застройке посёлка под обстрелом с дрона ВСУ.
1:38 50.75527, 35.39651
Источник 21+
Геопривязка
#ru
11.04.26 Константиновка - Степановка
Позиционные боевые действия в районе Горловки.
Передовая позиция ВС РФ в окрестностях Степановки подверглась обстрелу со стороны ВСУ. ВС РФ продвинулись более1.5 км и вышли на северные окраины Степановки.
0:39 48.473420,37.613850
Источник 21+
Геопривязка
#ru
06.04.26 Северск - Никифоровка
Активные боевые действия в районе Северска.
Атака ВС РФ пехотным подразделением севернее Никифоровки. Штурмовая группа зачищает позицию ВСУ. ВС РФ продвинулись около 2 км и увеличили зону контроля на рубеже Никифоровка - Каленики.
48.80452, 37.92016
Источник 21+
Геопривязка
#ru
06.04.26 Покровское - Берёзовое
Позиционные боевые действия в Днепропетровской зоне безопасности.
Передовые позиции ВС РФ в Берёзовом подверглись обстрелу ВСУ. ВС РФ заняли ряд новых позиций в посёлке увеличив зону контроля на 1 км.
0:19 47.871420,36.492084
1:13 47.874686,36.491471
Источник 21+
Геопривязка
#ru
31.03.26 Северск - Кривая Лука
Активные боевые действия в районе Северска.
Атака ВС РФ подразделением легких мотострелков около Кривой Луки. Штурмовик ВС РФ попал под обстрел ВСУ на трассе к посёлку. ВС РФ увеличили зону контроля выйдя на рубеж Каленики-Кривая Лука.
0:41 48.860286,38.001178
0:43 48.859195,37.930673
Источник 21+
Геопривязка
Геопривязка так же по https://t.me/creamy_caprice/11418?single
#ru
27.03.26 Красноармейск - Белицкое
Позиционные боевые действия в районе Красноармейска.
ВС РФ заняли ряд новых позиций в восточной части Белицкого. Передовые позиции в жилой застройке под огнём ВСУ . Продвижение ВС РФ более 600 метров.
0:06 48.40801, 37.1914
0:18 48.40476, 37.19765
Источник 21+
Геопривязка
#ru