2016-03-28 7 views
4

現在、テキスト内の数字の周囲にhtml太字のタグを追加するコードを記述しようとしています。私は、彼は100パーセントの男だったと思うPythonで一致するタグを追加します。

は、ここに私の入力テキストです。私は彼が100%男だと思う。私はここで私が欲しいものだ、彼はセント男

あたり100だったと思う:

は、私は彼が100パーセント男だったと思います。私は彼が100%男だと思う。私は彼が100%だったと思う。

しかし、それは私が得るものです:

私は彼が100パーセント 100パーセントの男だったと思います。私は彼が100%男だったと思います。私は彼が100% 100%男だと思う。事前に

import re 

taggedOutput="" 
myInput = "I think he was a 100 percent guy \n I think he was a 100 % \guy \n I think he was a 100 per cent guy" 
pattern ="(([0-9]+ ?)(%|percent|per cent))" 
regex = re.compile(pattern) 

# I use re.split to isolate the content I want to tag... I guess the problem is there... 
chunks = re.split(regex,myInput) 
#For every chunk 
for chunk in chunks: 
    if chunk != None: 
     matchStat = re.match(regex,chunk) 
     if matchStat: 
      taggedOutput += '<B>'+chunk+'</B>' 
     else : 
      taggedOutput += chunk 
#print 
print('<P>'+taggedOutput+'</P>') 

おかげで、あなたを、代わりに\1経由でキャプチャグループ参照)

+0

を...あなたの質問は何ですか? – jonrsharpe

+2

文字列を置換する方が簡単ですが、分割を行う場合は、最も内側の2つのキャプチャグループを非キャプチャグループに変更してください。 –

+0

私は探している出力を持っていたいと思います。私はre.splitがこのように振る舞う理由を理解していません。正しい結果を得るために何が使えますか?) –

答えて

5

使用re.sub()

pattern = r"(([0-9]+ ?)(%|percent|per cent))" 
print(re.sub(pattern, r"<b>\1</b>", myInput)) 
+3

100(%|%|%)働いています、ありがとう! –

関連する問題