2009-08-19 6 views
1

#または!の接頭辞が付いたすべての単語にhrefリンクを追加します。または @これはPythonの質問 - サブチャレンジ

がに変換する必要があります#garden #bambooとの接触が#bambooを再@Fredチェックテキストの場合:

Check the <a href="/what/bamboo">#bamboo</a> and contact <a href="/who/fred">@Fred</a> re <a href="/what/bamboo">#bamboo</a> <a href="/what/garden">#garden</a> 

#および@は別の場所に行くことに注意。

これは...限り私はハッシュをやって、持っているとして、正しい方向に私を指すことができ

matched = re.sub("[#](?P<keyword>\w+)", \ 
    '<a href="/what/(?P=keyword)">(?P=keyword)</a>', \ 
    text) 

どれ再達人です。シンボルごとに別々のマッチを行う必要はありますか?

答えて

5

私は1つのマッチと "場所"を選ぶ機能でそれをやっています。私:

import re 

places = {'#': 'what', 
      '@': 'who', 
      '!': 'why', 
     } 

def replace(m): 
    all = m.group(0) 
    first, rest = all[0], all[1:] 
    return '<a href="/%s/%s">%s</a>' % (
    places[first], rest, all) 

markedup = re.sub(r'[#[email protected]]\w+', replace, text) 
+0

これは完全に機能します。本当にありがとう! – PhoebeB

+0

@phoebebright、よろしいですか? –