2016-08-19 53 views
0

我想做一個代碼,只替換字符串變量中的整個單詞。首先我發現re.sub解決方案,但沒有提到關於變量裏面。 現在我的解決方案看起來(它不會取代整個詞):替換整個詞Python(僅變量)

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

如上的例子,我想在lista[index]與價值從VAR -> variable替換值。

編輯:

例子查詢:

Select Information,AdditionalInformation,Price from Table 

例如LISTA瓦萊斯:

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

不相關,但你可以像這樣簡化你的塊:'對於列表中的元素: query = query.replace(elem,var)' – Julien

回答

0

我想與從VAR值來代替LISTA [指數]值 - > 變量。

由此,我認爲正在尋找的東西沿着這些路線:

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