Python-替换字符串列表中的字符

Python-替换字符串列表中的字符,python,string,list,replace,char,Python,String,List,Replace,Char,我正在尝试从以下列表中每个项目的字符2到3中删除字符“0”: list1 = ['0x001', '0x002', '0x0a3'] 我期望的输出是: list1 = ['0x1', '0x2', '0xa3'] ['0x1', '0x2', '0xa3'] ['0x1', '0x2', '0xa3'] ['0x1', '0x2', '0xa3'] ['0x001', '0x002', '0x0a3'] 这是我迄今为止尝试过但没有奏效的方法: for i in list1: if

我正在尝试从以下列表中每个项目的字符2到3中删除字符“0”:

list1 = ['0x001', '0x002', '0x0a3']
我期望的输出是:

list1 = ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x001', '0x002', '0x0a3']
这是我迄今为止尝试过但没有奏效的方法:

for i in list1:

   if i[2:3] == '0':
        i.replace('0', '')

但这不会更改列表中的项目。提前谢谢你

您可以使用
re.sub

import re
list1 = ['0x001', '0x002', '0x0a3']
new_result = [re.sub('(?<=x)[0]+', '', i) for i in list1]

您可以使用
re.sub

import re
list1 = ['0x001', '0x002', '0x0a3']
new_result = [re.sub('(?<=x)[0]+', '', i) for i in list1]
在Python中,字符串(无论是字节还是unicode)是不可变的。这意味着您不能更改它,只能让变量引用新值

列表是一个可变对象,因此您可以更改其各个元素

在这里,您可以执行以下操作:

for index, i in enumerate(list1):
    if i[2:3] == '0':
        list1[index] = i[:2] + i[2:].replace('0', '')
(您不能替换整个字符串中的
'0'
,因为您希望保留初始字符串)


坚持可变性:上面的代码修改list1,而这:

list1 = [ i[:2] + i[2:].replace('0', '') for i in list1 ]
将创建一个新列表

请看以下两个示例代码:

list1 = ['0x001', '0x002', '0x0a3']
list2 = list1

for index, i in enumerate(list1):
    if i[2:3] == '0':
        list1[index] = i[:2] + i[2:].replace('0', '')

print(list1, list2)
输出为:

list1 = ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x001', '0x002', '0x0a3']
由于列表已修改,因此
list2
指向修改后的列表。但是

list1 = ['0x001', '0x002', '0x0a3']
list2 = list1

list1 = [ i[:2] + i[2:].replace('0', '') for i in list1 ]
print(list1, list2)
输出为:

list1 = ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x001', '0x002', '0x0a3']
因为
list1
是一个新列表,而
list2
仍然引用原始列表。

在Python中,字符串(字节或unicode)是不可变的。这意味着您不能更改它,只能让变量引用新值

列表是一个可变对象,因此您可以更改其各个元素

在这里,您可以执行以下操作:

for index, i in enumerate(list1):
    if i[2:3] == '0':
        list1[index] = i[:2] + i[2:].replace('0', '')
(您不能替换整个字符串中的
'0'
,因为您希望保留初始字符串)


坚持可变性:上面的代码修改list1,而这:

list1 = [ i[:2] + i[2:].replace('0', '') for i in list1 ]
将创建一个新列表

请看以下两个示例代码:

list1 = ['0x001', '0x002', '0x0a3']
list2 = list1

for index, i in enumerate(list1):
    if i[2:3] == '0':
        list1[index] = i[:2] + i[2:].replace('0', '')

print(list1, list2)
输出为:

list1 = ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x001', '0x002', '0x0a3']
由于列表已修改,因此
list2
指向修改后的列表。但是

list1 = ['0x001', '0x002', '0x0a3']
list2 = list1

list1 = [ i[:2] + i[2:].replace('0', '') for i in list1 ]
print(list1, list2)
输出为:

list1 = ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x1', '0x2', '0xa3']
['0x1', '0x2', '0xa3'] ['0x001', '0x002', '0x0a3']
因为
list1
是一个新列表,而
list2
仍然引用原始列表