如何解决仅当使用列表理解完全匹配时才替换 python 列表
我有以下列表:-
list= ['order','orderNumber']
我想用双引号将 order
括起来,而不是 orderNumber
我在列表理解中尝试了以下内容
if 'order' in list:
list = [item.replace('order','"' + 'order' + '"') for item in list]
但输出是:- orderNumber 中的订单也用双引号括起来,这是不需要的
['"订单"','"订单"号码']
预期输出是:-
['"订单"','订单号']
解决方法
您应该使用 ==
运算符而不是 in
作为:
lst = ['order','orderNumber']
lst = [f'"{elt}"' if elt == 'order' else elt for elt in lst]
print(lst)
另外,不要使用 list
作为对象名称。
更新:对不支持 +
的低于 3.6 的 Python 版本使用连接运算符 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。