2016-08-19 54 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