2016-05-23 9 views
1

私はPythonの初心者です。私は次の問題を解決しようとしています。私は.txtファイル(単なる例)でSQLクエリのリストを持っている:Pythonを使用して文字列内に複数の部分文字列と文字を見つける汎用コードまたはPython関数?

SELECT first_name, last_name From table1 WHERE ID = 1234 AND date_of_birth = 19/01/1996; 
SELECT last_name From table2 WHERE ID = 4563 AND date_of_birth = 10/04/1997 AND lisence_no = 2874; 
SELECT first_name From table1 WHERE ID = 3762 AND age = 23 AND last_name = 'Maria'; 
SELECT first_name From table1 WHERE ID = 2894; 

など......今私はlisence_noなど、ID、last_nameのような特定の値を交換したいです単純に '?'へのクエリで

ので、私はこのような出力を取得したいこと:

私は、SQLクエリの膨大なリストについては、このタイプの出力を得るためにpythonで使用することができますどのような機能
SELECT first_name, last_name From table1 WHERE ID = '?' AND date_of_birth = '?'; 
SELECT last_name From table2 WHERE ID = '?' AND date_of_birth = '?' AND lisence_no = '?'; 
SELECT first_name From table1 WHERE ID = '?' AND age = '?' AND last_name = '?'; 
SELECT first_name From table1 WHERE ID = '?'; 

は私がのような関数は、1回のみの検索に、またはstr.indexをstr.findし、いくつかの周りの作業を伴うことを知っています。私はいくつかの熟練したPythonユーザが私の場合に役立つ関数または関数の組み合わせについて知っていることを期待しています。

ありがとうございます!

+1

古い質問:[Parsing SQL with Python](http://stackoverflow.com/q/1394998/4279)や入力が正規のものであれば、正規表現を使用することができます( 're'モジュール)。または、その間に何かがある場合は、ファイルを解析するために独自の言語を作成することができます。[コード例](http://stackoverflow.com/q/26184812/4279) – jfs

+0

置き換えたいデータ'= 'の後に続きます。もしそれがファイル全体の場合、それはあまりにも難しくありません。 – henrikstroem

答えて

0

私はこれに対して小さなスクリプトを書いています。それがあなたとうまく動作することを願っています。

def replaceCustom(inputField, str): 
    index = 0 
    index2 = 1 
    while(index<index2): 
     index = str.find(inputField,index) 
     index2 = str.find("AND",index2) 

     str = str.replace((str[index:index2]), inputField+ " = '?' ") 
     index +=1 
     index2 +=1 
     print (index, index2) 

    return str  

str = """SELECT first_name, last_name From table1 WHERE ID = 1234 AND date_of_birth = 19/01/1996; 
SELECT last_name From table2 WHERE ID = 4563 AND date_of_birth = 10/04/1997 AND lisence_no = 2874; 
SELECT first_name From table1 WHERE ID = 3762 AND age = 23 AND last_name = 'Maria'; 
SELECT first_name From table1 WHERE ID = 2894;""" 

str = replaceCustom("ID", str) 
str = replaceCustom("date_of_birth", str) 
str = replaceCustom("lisence_no", str) 

私はそれをテストしているようです。

関連する問題