python 仅当使用列表理解完全匹配时才替换列表

python list replace only if it is a exact match using list comprehension

我有以下列表:-

list= ['order','orderNumber']

我想将 order 包含在 double_quotes“订单”中,而不是 orderNumber 我在列表理解中尝试了以下内容

if 'order' in list:
     list = [item.replace('order', '"' + 'order' + '"') for item in list]

但输出是:- 来自 orderNumber 的订单也用不需要的双引号括起来

['"order"', '"order"Number']

预期输出为:-

['"order"', 'orderNumber']

您应该使用 == 运算符而不是 in 作为:

lst = ['order','orderNumber']
lst = [f'"{elt}"' if elt == 'order' else elt for elt in lst]
print(lst)

此外,不要使用 list 作为对象名称。


更新:对不支持 fstrings.

的低于 3.6 的 Python 版本使用连接运算符 +
lst = ['order','orderNumber']
lst = ['"{}"'.format(elt) if elt == 'order' else elt for elt in lst]
print(lst)

您可以使用 regular expressionre.sub:

>>> import re
>>> lst = ['order', 'orderNumber']
>>> [re.sub('^order$', '"order"', item) for item in lst]
>>> ['"order"', 'orderNumber']

请检查以下是否适合您

lista = ['order','orderNumber']
listb = []
if 'order' in lista:
    for item in lista:
        if item == 'order':
            listb.append(item.replace('order', '"' + 'order' + '"'))
        else:
            listb.append(item)
lista = listb