我有如下字符串
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
包中设置一个 defaultdict
ionary:
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/