algorithm - 在python中替换用户名twitter

标签 algorithm python-3.x twitter

我有如下字符串

tweet = "thank you guys, for coming my birthday @abcd @defg @hijk , and  @abcd don't forget your promises"

如何将该推文更改为

tweet = "thank you guys, for coming my birthday USERNAME_TWITTER_1 USERNAME_TWITTER_2 USERNAME_TWITTER_3 , and USERNAME_TWITTER_1 don't forget your promises"

`

最佳答案

您可以使用 id_dispatcher 函数:

from itertools import count

def id_dispatcher():
    return lambda c=count(1): next(c)

然后我们可以从 collections 包中设置一个 defaultdictionary:

from collections import defaultdict

dc = defaultdict(id_dispatcher())

然后使用 regex replacement (请参阅构建 Twitter 用户名正则表达式的链接):

import re

re_user = re.compile(r'(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9]+)')
outp = re_user.sub(lambda x : 'USERNAME_TWITTER_%s'%dc[x.group(0)],tweet)

这会产生:

>>> re_user.sub(lambda x : 'USERNAME_TWITTER_%s'%dc[x.group(0)],tweet)
"thank you guys, for coming my birthday USERNAME_TWITTER_1 USERNAME_TWITTER_2 USERNAME_TWITTER_3 , and  USERNAME_TWITTER_1 don't forget your promises"

关于algorithm - 在python中替换用户名twitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44565300/

相关文章:

javascript - 将一个数字转换为另外两个数字的总和,使差异最小

python - 从偏好列表中找到可行的组合

python - Python 3.5 (virtualenv) 中没有持久的命令历史记录

python - 根据列表项第一个元素的邻接性合并列表项

ios - 如何在应用程序中获取 Twitter 和 Facebook 图标

javascript - Twitter API 搜索用户在日期之间的推文

algorithm - O(in) 是二次复杂度的线性复杂度吗?还是取决于k?

c++ - 在Rcpp中使用OptimLib时出现错误

python-3.x - 使用 NOT 和 AND 条件过滤数据帧

c# - 保护使用使用 twitter 登录的应用程序的 API