2011-10-30 5 views
1

Pythonを使用して、(ハイフン付き)というテキストブロックで'tune yards'などを検索したい場合は'tune yards'(なし)とします。私は両方がマッチとみなされることを望む。私はfind()関数を使用しています。 elifステートメントをスタッキングするのではなく、-とスペースを1つの同じものとして扱う良いPythonの方法はありますか?Pythonのfind()呼び出しで2つの文字を同等にする

このような何か:(私はこれは動作しません知っている:P)

treating '-' as ' ': 
    if blockOfText.find('tune yards') > -1: 
     do something 
+0

は(「 - 」、 '「)'テキストのブロックはそれは、Pythonを学びながら、私はre' 'で多くのことを印象づけてきた –

答えて

4
>>> re.search('tune[ -]yards', '58 tune yards of music') 
<_sre.SRE_Match object at 0x1ad68b8> 
>>> re.search('tune[ -]yards', '35 tune-yards of trombone') 
<_sre.SRE_Match object at 0x1ad6988> 

とマッチオブジェクト(他の可能返された値がNoneことで)常に真なので、結果ができますifでテストしてください。私は `交換しないしようとしています

+0

低迷ようだという理由だけで。ありがとうございます –

0
if (blockOfText.find('tune yards') + blockOfText.find('tune-yards')) > -1: 
    do something 
+0

これは0の位置にあるテキストを見つけることができません。 –

+1

一致の場所が問題でない場合、find()は不便です - blockOfTextの '' tune yards 'または' blockOfText'の 'tune-yards'を使います。 –

関連する問題