-1
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 标签。

4

3 回答 3

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 :('))
于 2012-08-10T22:35:51.040 回答
1
>>> s = '<p>This :) is an example for:) emoticons :)</p>'
>>> s.replace(' :)', ' <img>')
'<p>This <img> is an example for:) emoticons <img></p>'

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

于 2012-08-10T22:13:11.800 回答
1
import re
s = '<p>This :) is an example for:) emoticons :)</p>'
s = re.sub('\s:\)', ' <img>',s)
于 2012-08-10T22:13:30.830 回答