2011-01-12 9 views
2

データファイルの特定の列から文字列を抽出し、その文字列に含まれる内容に基づいてその文字列のアルゴリズムを実行する必要があります。Pythonで文字列のセットを検索する方法

たとえば、文字列 iPhone、iPadなどが含まれている場合、アルゴリズム 'A'を実行する必要があります。Android、Symbianなどが含まれている場合は、アルゴリズム 'B'を実行する必要があります。

これまでPythonを使ったことはありませんが、このロジックを入力するために必要なPythonスクリプトがあります。 IFコマンドのロジックに、文字列にこれらの部分文字列が含まれているかどうかをテストするにはどうすればよいですか?何らかの正規表現を使用するのか、これをPythonで簡単に行う方法がありますか?

第二にはないながら、これらの文字列は、アルゴリズムがシンプル

AlgorithmA(some_other_string) 
AlgorithmB() 

としてインストールPythonパッケージから呼び出されるように

Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20 

Mozilla/5.0 (Linux; U; Android 1.6; en-us; A-LINK PAD ver.1.9.1_1 Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 

などのユーザーエージェント文字列ですので、最初のアルゴリズムは、引数を取ります。

テキストに基づいて、我々は変数

search_algorithm = AlgorithmA(some_other_string) 
       or 
search_algorithm = AlgorithmB() 

を取得し、これを

output = func(user_agent, search algorithm) 
+2

してください入力データのサンプルを提供できますか? – MattH

+0

@MattH、これらはウェブブラウザからのユーザエージェント文字列です。 – sfactor

答えて

4

別の関数に引数として渡されますが、正規表現せずにそれを行うことができます。

def funcA(text): 
    ... 

def funcB(text): 
    ... 

algo = (('iPhone', funcA), 
     ('Android', funcA), 
     ('Symbian', funcA), 
     ('Dell', funcB), 
     ('Asus', funcB), 
     ('HP', funcB)) 

text = '... your text ...' 

for word, func in algo: 
    if word in text: 
     func(text) 
+0

dict機能は実際には使用しません。論理的に必要なのは、2タプルのタプルだけです。 –

+0

@John - あなたが正しい、固定、ありがとう! – eumiro

関連する問題