Функция sub в regex может принимать функцию в качестве аргумента repl.
📄 Из документации:
If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.
То есть для каждого совпадения будет вызвана функция для вычисления замены вместо замены на одну и ту же строку для всех совпадений.
Иными словами, для замены разных совпадений на разные строки не потребуется запускать re.sub() много раз для каждой строки замены. Достаточно определить функцию, которая вернёт строку для каждого из совпадений.
Описание слишком запутанное🤔, давайте лучше рассмотрим на простом примере:
Создаем карту замены. То есть какие строки на какие требуется менять.
remap = {
'раз': '1',
'два': '2',
'три': '3',
'четыре': '4',
'пять': '5',
}
Пишем функцию поиска строки для замены. Единственным аргументом будет объект re.Match.
Используя данные этого объекта мы вычисляем замену on-the-fly!
def get_str(match: re.Match):
word = match.group(1)
return remap.get(word.lower()) or word
Пример текста.
text = '''Раз Два Три Четыре Пять
Вместе будем мы считать
Пять Четыре Три Два Раз
Мы считать научим вас
'''
Теперь запускаем re.sub и вместо строки замены (repl) подаём имя функции.
(Данный паттерн ищет отдельные слова в тексте)
>>> print(re.sub(r'(\w+)', get_str, text))
1 2 3 4 5
Вместе будем мы считать
5 4 3 2 1
Мы считать научим вас
Думаю, достаточно наглядно 🤓
#libs#regex
Очередной раунд вложений: Акции, ETF, облигации и золото📈💰
Всем привет, настал очередной раунд вложений. Сегодня в выпуске:
🔹#Акции
Я продолжаю придерживаться консервативной стратегии инвестирования в #ETF на так называемый «широкий рынок». Однако, как и в прошлый раз, планирую часть вложений направить в экономику страны проживания. Тогда часть средств достались #DHL и #Lufthansa. Сегодня я планирую стать владельцем части акций Баварского Моторного Завода (или попросту Бэ Эм Зэ), который, несмотря на скепсис широкого круга инвесторов и неразбериху с зелёной повесткой, прочно стоит на ногах и планирует демонстрировать хорошие результаты дальше. Лично видел, NDA не подписывал.
▫️BMW.DE / Bayerische Motoren Werke — 88€
📊Инвестиции в ETF
В этом раунде вложения следующие:
▫️VUAA/ Vanguard S&P 500 UCIT ETF (Фонд состоит из 500 самых крупных американских компаний) — 572€
▫️SNAW/iShares MSCI World ESG Screened — 496€ (Этот фонд ориентирован на широкодиверсифицированные вложения в мировую экономику в целом)
▫️VGDW/Vanguard FTSE All-World High Dividend Yield UCITS ETF — 373€ (Фонд инвестирует в высокодивидендные компании во всём мире)
🔹#Облигации
▫️CBUE/iShares USD Treasury Bond 3-7yr (Бонды американского казначейства) — 87€
🔹#REIT (Real Estate Investment Trusts)
▫️10AJ / Amundi Index FTSE EPRA NAREIT Global UCITS ETF (Глобальный фонд инвестиций в недвижимость по всему миру, по версии западных стран, конечно же) — 106€
Верю, что мы всё ещё восстанавливаемся от пандемии и у арендной ренты светлое будущее.
🔹#Металлы
В этот раз отвлекусь от виртуальных сущностей и вкладываюсь в натуральное золото в лице, пожалуй, самой популярной инвестиционной монеты «Канадский кленовый лист», отчеканенной из 1/10 унции золота 9999 пробы в 2023 году.
▫️ 1/10 Unze Gold Maple Leaf — 245€
💸Итог
В этом инвестиционном раунде вложено: 1976€
Спасибо, что проходите со мной этот путь. На следующей, не менее загруженной для меня неделе, обсудим результаты портфеля. Ставьте реакции и делитесь постом!
#Результаты_schrittproschritt
Всем привет! Мне везёт периодически отчитываться во время всяческих мировых потрясений. Хотя, когда я собираю данные (полдень по CET), выглядит всё не так уж и жутко, как можно было бы предположить, исходя из новостного фона.
Важно: доходность активов я считаю без учёта новых вложений за последний период (февраль — начало марта), однако аллокация (общие суммы и проценты) указана уже с их учётом.
📊 Детализация портфеля на дату отчета
Формат: (Сумма) / (% от портфеля) 📈📉 (Прибыль за период) / (% доходности)
🔹#Акции
€14 844,01 / 69,15% 📉 −€71,55 / −0,61%
Война на Ближнем Востоке пугает инвесторов.
🔹#Облигации
€3 302,60 / 15,39% 📉 −€9,04 / −1,77% Бонды чуток припали. Рынок нервничает: потенциальный рост затрат в цепочках добавленной стоимости из-за неопределённости на энергорынках может сказаться на способности эмитентов обслуживать долги.
🔹#Металлы (#золото)
€156,69 / 0,73% 📈 +€9,69 / +6,59% Продолжаем расти, стоимостно выражая страхи масс. Считаю этот рост спекулятивным; а если я не прав, то пора начинать собирать крышки от колы, как в Fallout ☢️
🔹#Криптовалюта
€2 068,78 / 9,64% 📉 −€9,00 / −0,43% Падение предыдущих месяцев сгладилось на фоне попыток инвесторов найти «тихую гавань» в нестабильный период.
🔹#Альтернативные_инвестиции
€1 093,79 / 5,10% 📉 −€1,21 / −0,11% Первый месяц, когда этот класс активов оказался устойчивее всех остальных.
📉 Общие итоги портфеля
Общая стоимость: €21 465,87 (разместил дополнительные €6000+)
Убыток за период: −€81,11 / −0,52%
Пока весь мир «колбасит и трясёт» (с), аллокация активов в портфеле стала почти идеально отражать изначальную идею по диверсификации. Было бы неплохо добавить больше товарных активов и #REIT (фонды недвижимости), но морально я пока не готов заходить в них по текущим ценам.
Спасибо, что читаете! Интересно ваше мнение: как думаете, насколько долго продлится напряжение (де-юре) / война (де-факто) на Ближнем Востоке? 💬
Очередной раунд вложений: Акции, ETF, облигации, корпоративный долг и золото 📈💰
Привет всем! 🌟
Время нового раунда вложений. Если в прошлом месяце из-за глобальной неопределённости я не успел «припарковать» денежные средства, то сейчас уже есть ощущение, что нет смысла ждать негативного разрешения стратегического персидского цугцванга. Так как предыдущие инвестиции не были реализованы, в этом посте я несколько расширяю идеи, сохраняя пару прошлых позиций.
🔹#Акции
Продолжаю придерживаться консервативной стратегии инвестирования в #ETF на так называемый «широкий рынок». Однако, как и в прошлый раз, часть средств планирую направить в экономику страны проживания. В прошлый раз инвестиции достались #DHL и #Lufthansa. Сегодня в планах покупка акций Баварского Моторного Завода (или попросту Бэ Эм Зэ), который, несмотря на скепсис многих инвесторов и неразбериху с «зелёной повесткой», прочно стоит на ногах и, по моему мнению, продолжит показывать отличные результаты. Лично видел, NDA не подписывал.
📌BMW.DE / Bayerische Motoren Werke — 88€
📊Инвестиции в ETF
В этом раунде мои вложения следующие:
▫️ VUAA / Vanguard S&P 500 UCITS ETF (Фонд состоит из 500 крупнейших американских компаний) — 1150€
▫️ SNAW / iShares MSCI World ESG Screened (Ориентирован на широкую диверсификацию по мировой экономике) — 1000€
▫️ VGDW / Vanguard FTSE All-World High Dividend Yield UCITS ETF (Инвестиции в высокодивидендные компании по всему миру) — 750€
🔹#Облигации
▫️ CBUE / iShares USD Treasury Bond 3-7yr (Облигации американского казначейства) — 180€
▫️ IBCD / iShares Corporate Bond (Корпоративные долги развитых стран с доходностью около 5%) — 125€
🔹#REIT (Real Estate Investment Trusts)
▫️ 10AJ / Amundi Index FTSE EPRA NAREIT Global UCITS ETF (Глобальный фонд инвестиций в недвижимость) — 212€
Верю, что мы всё ещё восстанавливаемся после пандемии, и у арендной ренты светлое будущее 🏢.
🔹#Металлы
На этот раз вкладываюсь в натуральное золото, а именно в одну из самых популярных инвестиционных монет — «Канадский кленовый лист». Она отчеканена из 1/10 унции золота 9999 пробы в 2023 году.
▫️1/10 Unze Gold Maple Leaf — 255€
Конечно, не обойдётся и без виртуальных металлов:
▫️XAU (Gold) / Золото — 245€
💸Итог
Общая сумма вложений в этом раунде — 4000€.
Это достаточно большое единовременное вложение, которое должно неплохо диверсифицировать портфель и сместить фокус с криптовалют, особенно после недавнего Airdrop. За 4 минуты участия я получил самую рекордную прибыль в своей жизни по соотношению «время / доход» 😎. Но об этом расскажу в середине недели.
📆 В среду постараюсь подвести итоги прошлого месяца, который подарил нам увлекательные американские горки на рынках. Спасибо, что читаете! Последние несколько недель были напряжёнными, но я полон сил писать больше 💪.
Как всегда, лайкайте, делитесь и обсуждайте в комментариях!