Заметка начинающим, которые часто сталкиваются с подобной непоняткой.
Ситуация следующая, есть список файлов:
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 #Germania boccia la proposta di bilancio UE: “Finanziariamente sproporzionata”. Il ministro Klingbeil critica la tassa sulle grandi imprese e il prelievo sul tabacco: “Segnale sbagliato, Berlino non può sostenerla”.
@UltimoraPolitics
🇩🇪#Germania EXIT POLL — Alternative für Deutschland domina le elezioni statali in due land della Germania Est: vince col 33% in Turingia ed è testa a testa con la CDU col 31,5 in Sassonia.
@UltimoraPolitics
❗️🇩🇪 #Germania, dal 1° aprile la cannabis diventa ufficialmente legale per uso ricreativo. Ok dal Parlamento: 407 a favore, 226 i contrari, 4 gli astenuti @UltimoraPolitics
❗️🇩🇪#Germania, dal 1° aprile la cannabis diventa ufficialmente legale per uso ricreativo. Ok dal Parlamento: 407 a favore, 226 i contrari, 4 gli astenuti
@UltimoraPolitics
Tensione Roma-Berlino sui migranti, fonti Palazzo Chigi: "Grande stupore per la notizia secondo la quale un portavoce del ministero degli Esteri della repubblica federale di #Germania avrebbe annunciato un imminente finanziamento a delle Ong per un progetto di assistenza di migranti sul territorio italiano e un progetto di "salvataggi" in mare. Si confida che la notizia sia priva di ogni fondamento perché il finanziamento da parte della Germania di attività di Ong sul territorio italiano sarebbe una gravissima anomalia"
@UltimoraPolitics
#Germania
Il Bundestag approva il progetto di legge sull'introduzione del reddito di cittadinanza: sostituirà da gennaio 2023 l'Hartz IV e avrà come obiettivo non più trovare un impiego per i disoccupati il più rapidamente possibile, ma formarli a un lavoro a tempo indeterminato. Il sussidio di disoccupazione verrà aumentato da 449 a 502 euro al mese. Le prestazioni dovrebbero essere ridotte nei primi sei mesi dalla ricezione del reddito di cittadinanza soltanto in casi eccezionali, qualora il disoccupato non collabori con costanza con i centri per l'impiego nella ricerca di un lavoro. Oltre al reddito di cittadinanza, previsti 150 euro al mese per la formazione continua per chi ottiene una qualifica professionale o 75 euro per chi intraprende altre misure in questo campo
@UltimoraPolitics
🇩🇪#Germania – Un alto funzionario del Ministero degli Esteri tedesco, con competenza per il Medio Oriente, parteciperà come osservatore alla riunione del Board of Peace del presidente Donald #Trump, riferiscono fonti del governo
@UltimoraPolitics24
#Germania, #Iran: la Germania non parteciperà attivamente alle azioni militari contro l'Iran ma difenderà i propri soldati presenti in Giordania e in Iraq se verrannoa attaccati. Lo ha fatto sapere il Ministro degli Esteri Johann Wadephul questa mattina.
Alcune basi militari in cui i soldati tedeschi sono presenti sono state prese di mira dall'Iran in questi giorni. Fino a questo momento non si segnalano feriti.