Python - 替换表情符号的字符

时间:2012-08-10 22:01:55

标签: python regex

l = ':;\'"!@#$%^&*()_-=+][{}~`.><?/\\|' # list of character that can be used for emoticons

s = '<p>This :) is an example for:) emoticons :)</p>'

我使用了s.replace(':)', '<img>')

result = '<p>this <img> is an example for<img> emoticons <img></p>'

如何制作如下结果:

result = '<p>this <img> is an example for:) emoticons <img></p>'

感谢您的帮助!

编辑:我有一个初始列表l。用户只能使用l中的字符制作表情符号。例如::):]等。对于每个表情符号,我将分别将其更改为图像作为响应。因此用户必须正确输入数据:通配符应该是独立的。困难的部分是输入数据包括HTML标签。

3 个答案:

答案 0 :(得分:2)

import re
emos = { ':)' : 'smiley.jpg',
         ':(' : 'saddy.jpg',
         ';p' : 'bllinky.jpg' }
pattern = re.compile('|'.join( re.escape(emo) for emo in emos))
def emoImg(emoMatch):
    return '<img src = "/images/{0}>'.format(emos[emoMatch.group(0)])
def emoSub(string):
    return pattern.sub(emoImg,string)
print(emoSub('Hi :) I miss you :('))

答案 1 :(得分:1)

>>> s = '<p>This :) is an example for:) emoticons :)</p>'
>>> s.replace(' :)', ' <img>')
'<p>This <img> is an example for:) emoticons <img></p>'

如果您只想在模式具有前导空格的情况下进行替换,请在匹配和替换周围添加前导空格。

答案 2 :(得分:1)

import re
s = '<p>This :) is an example for:) emoticons :)</p>'
s = re.sub('\s:\)', ' <img>',s)