Заметка начинающим, которые часто сталкиваются с подобной непоняткой.
Ситуация следующая, есть список файлов:
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
"Come possiamo garantire che lo sviluppo dell'intelligenza artificiale #IA serva davvero al bene comune e non venga utilizzato solo per accumulare ricchezza e potere nelle mani di pochi? Questa è una domanda urgente, perché questa #tecnologia sta già avendo un impatto reale sulla vita di milioni di persone, ogni giorno e in ogni parte del mondo". A ribadirlo è Papa #LeoneXIV che questa mattina, nella Sala del Concistoro, in Vaticano, ha incontrato i Partecipanti alla Conferenza "Artificial Intelligence and Care of Our Common Home".
Il Pontefice ricordando la Dottrina Sociale della Chiesa, riflette ulteriormente affermando: "Affrontare questa sfida richiede di porsi una domanda ancora più fondamentale: cosa significa essere umani in questo momento storico? Gli esseri umani sono chiamati a essere collaboratori dell'opera della creazione, non semplici consumatori passivi di contenuti generati dalla tecnologia artificiale".
"La nostra dignità risiede nella capacità di riflettere, scegliere liberamente, amare incondizionatamente ed entrare in relazioni autentiche con gli altri. L'intelligenza artificiale ha certamente aperto nuovi orizzonti alla creatività, ma solleva anche serie preoccupazioni circa le sue possibili ripercussioni sull'apertura dell'umanità alla verità e alla bellezza, e sulla sua capacità di meraviglia e contemplazione. Riconoscere e salvaguardare ciò che caratterizza la persona umana e garantisce la sua crescita equilibrata è essenziale per stabilire un quadro adeguato per gestire le conseguenze dell'intelligenza artificiale", il monito del Santo Padre.
Infine, un pensiero rivolto alle nuove generazioni: "Per costruire insieme ai nostri #giovani un futuro che realizzi il bene comune e sfrutti le potenzialità dell'intelligenza artificiale, è necessario ripristinare e rafforzare la loro fiducia nella capacità umana di guidare lo sviluppo di queste tecnologie. Una fiducia che oggi è sempre più erosa dall'idea paralizzante che il suo sviluppo segua un percorso inevitabile. Ciò richiede un'azione coordinata e concertata che coinvolga #politica, istituzioni, imprese, #finanza, istruzione, comunicazione, cittadini e comunità religiose. Gli attori di questi ambiti sono chiamati a impegnarsi in un impegno comune, assumendosi questa responsabilità comune. Questo impegno viene prima di qualsiasi interesse di parte o profitto, sempre più concentrato nelle mani di pochi. Solo attraverso una partecipazione diffusa che dia a tutti la possibilità di essere ascoltati con rispetto, anche ai più umili, sarà possibile raggiungere questi ambiziosi obiettivi".