gpt4 book ai didi

Python 正则表达式和 @username 的处理

转载 作者:行者123 更新时间:2023-11-30 23:37:49 25 4
gpt4 key购买 nike

给定一个文本 block ,我想找到@username的所有实例(其中用户名可以是任何用户名),然后检查用户名是否有效,如果有效,我想用链接替换文本中的它。

我知道如何用链接替换 ​​@username 的所有实例...但我不确定如何首先插入该检查。任何人都可以帮忙解决这个问题 - 假设我有一个名为 is_valid(username) 的函数,它返回 True 或 False?

这是我所拥有的:

urlfinder = re.compile(r'@([A-Za-z0-9_]+)')
urlified = urlfinder.sub(r' <a href="http://mysite.com/users/\1">@\1</a> ', text)

最佳答案

您可以使用函数作为替换 - 在本例中,这是 is_valid 的一个版本,如果已知用户名,则返回 URL,否则返回作为匹配项给出的内容。您可以重命名此函数,而不是 if uname in users,而是调用您的 is_valid 函数...

def is_valid(username, users=['@jon']):
uname = username.group()
if uname in users:
return '<a href="http://mysite.com/users/{0}">{0}</a>'.format(uname)
return uname

text1 = 'blah blah @jon blah blah'
text2 = 'blah and more blah @bob whatever'

import re
print re.sub(r'@\w+', is_valid, text1)
# blah blah <a href="http://mysite.com/users/@jon">@jon</a> blah blah
print re.sub(r'@\w+', is_valid, text2)
# blah and more blah @bob whatever

关于Python 正则表达式和 @username 的处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15150985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com