Функция 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
¡New build available!
#Matrixx | #diting
Device: Xiaomi 12T Pro | Redmi K50 Ultra
Build Date:2024-03-14
Downloads:
Link |
Changelog:
ROM LOG
- Include genshin fire animation
- Fixed some jittering and lags
- improve the performance
- Sync with last source of matrix
- Bug fixes
- Now ota works
Notes
• Gapps are included
• FW included , meme cam
• Remebering, Don't report bugs without logs.
• CTS pass by default
By @TeamMEX_XDA
Donate PayPal
¡New build available!
#Matrixx | #diting
Device: Xiaomi 12T Pro | Redmi K50 Ultra
MD5SUM:a9a8f235f3a97a076ff3271f145d62c9
Build Date:2024-02-01
Downloads:
Link |
Changelog:
- Fixed eSIM issues (now eSIM should work without more problems)
- Fixed recovery issues no more fstboot when u try to reboot to recovery
- Fixed some internal crashes
Notes
• Gapps are included
• FW included , meme cam
• Remebering, Don't report bugs without logs.
• CTS pass by default
• Clean flash required
Thnks to @Mohammadnt96 for help me with some ideas and tests.
By @TeamMEX_XDA
Donate PayPal
¡New build available!
#Matrixx | #diting
Device: Xiaomi 12T Pro | Redmi K50 Ultra
MD5SUM:423c046d9878a3fc6ca7682639ee2ba1
Build Date:2024-01-19
Downloads:
Link |
Changelog:link
Notes
• Gapps are included
• GTX8_SPI for not working
• Remebering, Don't report bugs without logs.
• CTS pass by default
By @TeamMEX_XDA
Donate PayPal
¡New build available!
#Matrixx | #diting
Device: Xiaomi 12T Pro | Redmi K50 Ultra
MD5SUM:f576c0244e8cc653468173e082e9d96c
Build Date:2024-01-12
Downloads:
Link |
Changelog:
- Fixed codecs issues
- Screenrecord issue was fixed
- Netflix HDR is now working
- Fixed Netflix play issue
- revert some blobs to miui
- Introduce displayfeature color service and use MIUI color modes
- Set standard display color mode in AOD
Notes
• Gapps are included
• GTX8_SPI for not working
• Remebering, Don't report bugs without logs.
• CTS pass by default
By @TeamMEX_XDA
Donate PayPal
¡New build available!
#Matrixx | #diting
Device:Xiaomi 12T Pro | Redmi K50 Ultra
MD5SUM:35348bd7a59d0bf34e4219382862d476
Build Date:2023-12-27
Downloads:
Link |
Changelog:
- Initial public release
- Sepolicy enforcing
Notes
• Gapps are included
• FOD Not working on gtx8_spi touch screen
• Remebering, Don't report bugs without logs.
• CTS pass by default
By @TeamMEX_XDA
Donate PayPal