Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python列表替换仅当它是使用列表理解的精确匹配时_Python_Replace_List Comprehension - Fatal编程技术网

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)
您可以使用and
re.sub

>>> import re
>>> lst = ['order', 'orderNumber']
>>> [re.sub('^order$', '"order"', item) for item in lst]
>>> ['"order"', 'orderNumber']
您可以使用and
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

你能检查一下下面的内容是否适合你吗

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]='顺序'
将避免构建新的
列表
,并将所有保持不变的元素的工作量保持在接近零的水平。想到这一点,我检查了这个问题的副本,瞧,这是真的。:-)