Функция 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
#GitHub#UserScript
🌏ChatGPT 网页增强脚本 —— KeepChatGPT
💡 KeepChatGPT 是一个服务于 ChatGPT 网页版的 UserScript,它可以在一定程度上改善网页版服务的使用体验。
🙅 脚本的亮点是可以解决 ChatGPT 在使用这种诸如 NetworkError when attempting to fetch resource / Something went wrong. If this issue persists please contact us through our help center at help.openai.com / Conversation not found / This content may violate our content policy. If you believe this to be in error, please submit your feedback — your input will aid our research in this area 这几类报错。同时也对聊天中断、频繁刷新等问题起到了缓解。并且能够使用言无不尽功能让 ChatGPT 持续发言,直至它说完全部内容。
🌐 除此之外,KeepChatGPT 还有许多增强体验的功能,由于该项目的 GitHub Readme 写得过于优秀,建议直接前往阅读。你可以使用支持油猴脚本的程序安装脚本来使用它,建议直接前往 GreasyFork 安装。
⚠️ 谷歌应用商店和微软应用商店上的同名拓展不是作者提供的,并且抄袭该项目,特此说明。
Proxy Redirect #Userscript
Redirection userscript for privacy-oriented and open-source proxy #frontends.
Proxy Redirect automatically redirects to instances of privacy-oriented frontends, such as Scribe, Nitter, Libreddit, etc.
This allows more reliable access to available public instances per service, while also helping to distribute traffic more evenly across all instances and avoid performance bottlenecks and rate-limiting.
https://openuserjs.org/scripts/sjehuda/Proxy_Redirect
#javascript#123pan#139_cloud#189_cloud#ali_netdisk#aliyun_drive#aria2#baidu#baidu_netdisk#baidunetdisk#baiduyun#motrix#quark_netdisk#tampermonkey#tampermonkey_script#tampermonkey_userscript#tianyi_netdisk#uc_netdisk#userscript#xunlei_netdisk#yidong_netdisk
LinkSwift is a browser script that helps you quickly get direct download links for files stored on popular Chinese cloud services like Baidu, Alibaba, 123, and others—saving you time and making downloads easier without needing to visit each service’s website separately. It also improves the look of these cloud storage pages and adds extra features, such as support for different download tools and customizable themes. The main benefit is convenience: you can manage and download your cloud files faster, with a nicer interface, all from your browser. Just install the script using a tool like Tampermonkey, and it works on Chrome, Edge, and other major browsers.
https://github.com/hmjz100/LinkSwift