2016-08-19 15 views
0

文字列変数内の単語全体を置換するコードを実行しようとしています。まず、re.sub解決策が見つかりましたが、内部変数については言及されていませんでした。 今、私の解決策のルックス(それは単語全体を置き換えるものではありません):上記の例のよう単語全体のPythonを置換する(変数のみ)

for index in (range(len(lista)): 
    query=query.replace(lista[index],var) 

、私はVAR -> variableから値をlista[index]で値を置き換えたいです。

EDIT:

例クエリ:

Select Information,AdditionalInformation,Price from Table 

例リスタのバレス:

Information, Price 

例VAR:

var = "hide" 

最後にクエリがすべきルックス:

Select hide,AdditionalInformation,hide from Table 
+0

どのようなクエリが含まれていますか?正確に何を交換する必要がありますか? – Harsha

+0

[pythonの文字列から別の単語に置き換える]の可能な複製(http://stackoverflow.com/questions/16600823/replacing-word-with-another-word-from-the-string-in-python) –

+3

関連性はありませんが、ブロックを単純化することができます: 'elem in lista: query = query.replace(elem、var)' – Julien

答えて

0

私はVARの値を持つリスタ[インデックス]で値を置き換えたい - > 変数。このことから

、私はあなたがこれらの線に沿って何かを探している考える

for index in (range(len(lista))): 
    lista[index] = var 

これはvarに、リスト内のすべての項目を変更します。

リスト内のすべてのアイテムを置き換えないようにするには、正しいアイテムを置き換えるかどうかを決定する必要があります(リスト内のアイテムの位置がわかっている場合は)の交換:

lista[index] = var 
+0

例を見てください(これは、この作業を開始した後に追加された可能性があります)。 – glibdud

2

私は、これは動作するはずだと思う:

for word in alist: 
    query = re.sub(r'\b'+word+r'\b',var,query) 
2

あなたはlista内の単語のいずれかに一致する正規表現をコンパイルすることができます。

import re 

query = "Select Information,AdditionalInformation,Price from Table" 
lista = ["Information", "Price"] 
var = "hide" 

pat = re.compile(r'\b' + '|'.join(lista) + r'\b') 
query = pat.sub(var, query) 
print(query) 

出力

Select hide,AdditionalInformation,hide from Table 

\bワード境界を一致させるために使用されます。これにより、 "AdditionalInformation"が変更されるのを防ぎます。ドキュメントのRegular Expression Syntaxを参照してください。生の文字列としてr'\b'と書く必要があります。それ以外の場合は、バックスペースのANSIエスケープコードとして解釈されます。

0

kaasiasはちょうどこのコードでリストの要素を変更、書いたように:

for index in (range(len(lista))): 
    lista[index] = var 

と、リストの新しい要素を使用してクエリを作成してください。

query = "SELECT " + lista[0] + ", " + AdditionalInformation + ", " lista[1] + " FROM " + table 
関連する問題