2016-06-29 6 views
-1

私は、見た目の数だけ、:)/:)))) ...を+と置き換えたいと思います。 例えば:regexは(エモチコン)文字の繰り返しを置き換えます。

:)  -> + 
:))) -> +++ 

と負に同じ:

:( -> - 
:((( -> --- 

また、左利きの顔文字のために一致している必要があります:

(:  -> + 
(((: -> +++ 

):  -> - 
))): -> --- 

可能? :)

+0

すべてが可能です。 – Maroun

+0

@MarounMaroun ^^正規表現:-) –

+0

@AvinashRajでも、すべて可能です;) – Maroun

答えて

1

どうしてですか?

>>> def get_emoticon(txt): 
    return re.sub(r':(([\(\)])+)', lambda m: '-'*len(m.group(1)) if m.group(2) == '(' else '+' * len(m.group(1)), txt) 

>>> get_emoticon(':) hi :))) how r you? :(((:(') 
'+ hi +++ how r you? --- -' 
>>> 

更新:

>>> def get_emoticon(txt): 
    def func(match): 
     if match.group().startswith(':'): 
      return '-'*len(match.group(1)) if match.group(2) == '(' else '+' * len(match.group(1)) 
     return '+'*len(match.group(3)) if match.group(4) == '(' else '-' * len(match.group(3)) 
    return re.sub(r':(([\(\)])+)|(([\(\)])+):', lambda m: func(m), txt) 

>>> get_emoticon(':) (: hi :))) how r you? :(((:(') 
'+ + hi +++ how r you? --- -' 
>>> get_emoticon(':) (:))): hi :))) how r you? :(((:(') 
'+ + --- hi +++ how r you? --- -' 
>>> 
+0

あなたは '+ hi +++ how rのように結果を得ることができますか? - '?私は ':' – Kevad

+0

をスキップしたいと思います。返信stmtで ':'を取り除くことを忘れないでください –

+0

途中で... :)残念ながら残念ながら、左利きの絵文字では機能しません。 '(:' – Kevad

関連する問題