-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 に答える