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 expression 和 re.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
我有以下列表:-
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
.
+
lst = ['order','orderNumber']
lst = ['"{}"'.format(elt) if elt == 'order' else elt for elt in lst]
print(lst)
您可以使用 regular expression 和 re.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