python列表替换仅当它是使用列表理解的精确匹配时
我有以下清单:-python列表替换仅当它是使用列表理解的精确匹配时,python,replace,list-comprehension,Python,Replace,List Comprehension,我有以下清单:- list=['order','orderNumber'] 我想用双引号“order”而不是orderNumber括起订单 我试着理解下面的列表 if 'order' in list: list = [item.replace('order', '"' + 'order' + '"') for item in list] 但输出是:-orderNumber中的订单也包含了不需要的双引号 [“‘订单’,“‘订单’编号”] 示例输出为:- [“‘订单’
list=['order','orderNumber']
我想用双引号“order”而不是orderNumber括起订单
我试着理解下面的列表
if 'order' in list:
list = [item.replace('order', '"' + 'order' + '"') for item in list]
但输出是:-orderNumber中的订单也包含了不需要的双引号
[“‘订单’,“‘订单’编号”]
示例输出为:-
[“‘订单’,‘订单号’]
您应该在中使用
==
运算符,而不是:
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)
您应该在
中使用==
运算符,而不是:
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)
您可以使用andre.sub
:
>>> import re
>>> lst = ['order', 'orderNumber']
>>> [re.sub('^order$', '"order"', item) for item in lst]
>>> ['"order"', 'orderNumber']
您可以使用andre.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
你能检查一下下面的内容是否适合你吗
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
您可以只更改列表[0]
?为什么需要双引号?它可以在列表中的任何位置。您可以检查列表中的顺序
,如果为True
,则修改所有项目。你也需要检查理解。你能不能只更改列表[0]
?为什么需要双引号?它可以在列表中的任何位置。如果你要检查列表中的顺序
,如果为真
,则修改所有项目。您还需要检查理解情况。谢谢..works…f代表替换..?f缩写为fstrings用于使用python3格式化stringsworks…但python 2.7不支持f前缀…除了使用regexaded将代码与上下文运算符+
一起使用而不使用fstrings之外,还有其他选择吗。@KrishnaChaurasia:我建议您使用'“order”
(因为它实际上就是我们正在处理的一个字符串,我们不需要使用循环变量),或者如果您不喜欢重复自己(不会怪您),'{}'.format(elt)
,就可以使用2.6版本的解决方案(与f字符串类似,直接创建输出,而不是生成临时中间字符串;str.format
是f字符串的前身,f字符串是由语言语法直接支持的功能更强大的str.format
).2.6之前版本,'%s''%elt
('%s'(elt,)
当elt
可能是元组时.Thank..works…f代表替换..?f是fstrings的缩写,用于用python3格式化stringsworks…但python 2.7不支持f前缀…除了使用regexaded之外,还有其他替代方法吗?使用上下文操作符+
而不使用fstrings。@KrishnaChaurasia:我建议使用““order”“
(因为它实际上就是我们正在处理的一个字符串,所以我们不需要使用循环变量),或者如果您不喜欢重复自己(不会责怪您),”{}'.format(elt)
,对于一个可以回溯到2.6的解决方案(与f字符串类似,直接创建输出,而不是生成临时中间字符串;str.format
是f字符串的前身,f字符串是由语言语法直接支持的功能更强大的str.format
).2.6之前版本,'%s''%elt
('%s'(elt,)
当elt
可能是一个元组时。1)只有代码的答案通常是不受欢迎的,特别是当他们对原始代码进行了巨大的更改,并且任何给定更改的相关性都不清楚时。2)这是非常复杂的事情(例如,当你知道,事实上,字符串只是'order'
时,你仍然依赖str.replace
来制作更新版本,而你只需要用listcomp做listb.append('order')
.3),制作一个新的列表是不可避免的,但是当你的意图是就地更新时,就像你(某种程度上)当您在最后重新分配lista
时,您不需要为i构建新的列表
;,枚举(lista)中的项:如果项='order':lista[i]='order'“
将避免建立一个新的列表
,并将所有保持不变的元素的工作量保持在接近零的水平。考虑到这一点,我检查了这个问题的重复项,你瞧,这是吗?:-)只有代码的答案通常不被接受,特别是当他们对原始代码进行巨大更改,并且任何给定更改的相关性都不清楚时。2) 这是非常复杂的事情(例如,当你知道,事实上,字符串只是'order'
,你仍然依赖str.replace
来制作更新版本,而你可以只做listb.append('order')
.3)和listcomp,制作一个新的列表是不可避免的,但是,当目的是就地更新时,就像您在最后重新分配lista
时所做的那样,您不需要构建新的list
<代码>对于i,枚举(lista)中的项:如果项='顺序':lista[i]='顺序'
将避免构建新的列表
,并将所有保持不变的元素的工作量保持在接近零的水平。想到这一点,我检查了这个问题的副本,瞧,这是真的。:-)