Функция 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
💎 Топ-10 акций с наименьшим P/E
Один из самых ключевых финансовых мультипликаторов — P/E (price-to-earnings) — показывает, сколько инвесторы готовы заплатить за каждый сум (или доллар) прибыли компании. Проще говоря, чем ниже P/E, тем дешевле компания оценивается рынком относительно своих заработков.
🌱 Низкий P/E может означать, что акция недооценена и инвесторы пока не верят в её потенциал — или, наоборот, что бизнес переживает спад и прибыль падает.
🚀 Высокий P/E, напротив, указывает на ожидания будущего роста — рынок готов переплачивать за перспективу (часто это касается IT-компаний). Но иногда такие компании оказываются переоценёнными, если рост не оправдывается.
В нашем рейтинге по итогам III квартала лидируют банковские акции — 🏦«Узпромстройбанк», 🏦«Хамкорбанк», 🏦«Универсал банк», 🏦«Алокабанк». Это естественно: банки традиционно показывают стабильную прибыль, а их котировки растут медленнее, поэтому мультипликатор P/E у них остаётся низким.
📌 Низкий P/E — не всегда гарантия выгодной покупки, но точно повод присмотреться к бизнесу и понять, почему рынок оценивает прибыль так дешево.
—
💎 Eng past P/E ko‘rsatkichiga ega TOP-10 aksiyalar
Moliyaviy tahlilda eng muhim ko‘rsatkichlardan biri — P/E (price-to-earnings) kompaniya foydasining har bir so‘miga (yoki dollarga) investorlar qancha to‘lashga tayyorligini bildiradi. Oddiy qilib aytganda, P/E qanchalik past bo‘lsa, kompaniya bozorda o‘z foydasiga nisbatan shunchalik arzon baholanadi.
🌱 Past P/E ko‘rsatkichiga ega aksiyalar ko‘pincha bozor tomonidan hali to‘liq qadrlanmagan yoki vaqtinchalik ishonchsizlikka duch kelgan kompaniyalar bo‘lishi mumkin. Biroq bu ba’zan ish faoliyatidagi pasayish yoki foydaning kamayishi bilan ham bog‘liq bo‘ladi.
🚀 Yuqori P/E esa, aksincha, kelajakdagi o‘sish kutilayotganini anglatadi — bozor istiqbol uchun ko‘proq to‘lashga tayyor (bu holat ko‘pincha IT-kompaniyalarga xos). Ammo o‘sish kutilganidek bo‘lmasa, bunday aksiyalar ortiqcha baholangan bo‘lishi ham mumkin.
III chorak yakunlariga ko‘ra, bizning reytingda bank aksiyalari — 🏦“O‘zsanoatqurilishbank”, 🏦“Hamkorbank”, 🏦“Universal bank”, 🏦“Aloqabank” yetakchilik qilmoqda. Bu tabiiy hol: banklar odatda barqaror foyda ko‘rsatadi, lekin ularning aksiyalari sekinroq o‘sadi, shuning uchun ularning P/E ko‘rsatkichi past bo‘lib qoladi.
📌 Past P/E har doim ham foydali xarid kafolati emas, ammo bu ko‘rsatkich kompaniyani chuqurroq o‘rganish va bozor nima uchun foydani arzon baholayotganini tushunish uchun jiddiy sababdir.
📈#рейтинг#PE
#java#bedrock#bedrock_edition#bedrock_to_java#bungee#fabric#geyser#geysermc#hacktoberfest#java#java_edition#minecraft#minecraft_bedrock_edition#packet#pe#protocol#proxy#spigot#translator#velocity
Geyser is a free tool that lets you play Minecraft across different versions by connecting Minecraft Java Edition servers. It works by translating data between the two game versions, enabling cross-platform play on devices like Windows, iOS, Android, and consoles. You can install it as a plugin or standalone, and it supports recent Minecraft versions. This means you can join Java servers even if you only have Bedrock Edition, expanding your multiplayer options without needing a separate Java account if you use the Floodgate plugin. It’s great for seamless crossplay but may have some minor limitations due to game differences[1][2][5].
https://github.com/GeyserMC/Geyser