我是 Python 新手,尝试使用带有 if else 条件的 for 循环替换字符串, 我有一个字符串,并想以这样的方式替换该字符串的某些字符,即它应该采用/选择字符串的第一个字符并在 old_list 中搜索它们,如果字符匹配,它应该用 new_list 的字符替换该字符,如果字符不匹配则应考虑该字符(前一个)和字符串的下一个字符并组合搜索它们,然后在 old_list 中再次搜索,依此类推。
它应该在这个顺序中替换(从字符串中选择字符)= 010,101,010,010,100,101,00,00,011,1101,011,00,101,010,00,011,1111,1110,00,01010010 替换值 = 1001,0000,0000,1000,1111,1001,1111,1111,100,1010101011,100,1111,1001,0000,1111,100,10100101,10,10,101,101,101,101,10 /p>
以上面的字符串为例,如果我们执行该操作,字符串将变为 最终或结果字符串 = 100100000000100011111001111111111001010101011100111110010000111110010100101101010111111101010101010101
string = 01010101001010010100000111101011001010100001111111110000000010101010
old_list = ['00','011','010','101','100','1010','1011','1101','1110','1111']
new_list = ['1111','100','0000','1001','1000'1111','0101','1010101011','101010','10100101']
i = 0
for i in range((old), 0):
if i == old:
my_str = my_str.replace(old[i],new[i], 0)
else:
i = i + 1
print(my_str)
结果,字符串变成 = 1001000000001000111110011111111110010101010111100111110010000111110010100101101010111110101010101010
答案 0 :(得分:1)
new = ['a ','local ','is ']
my_str = 'anindianaregreat'
old = ['an','indian','are']
for i, string in enumerate(old):
my_str = my_str.replace(string, new[i], 1)
print(my_str)
答案 1 :(得分:1)
您对 range
的使用不正确。
range
从 lower
(包含)到 higher
(不包含)或简单地从 0 到 higher
(不包含)
您的 i == old
条件也不正确。 (i
是一个整数,而 old
是一个列表)。还有它应该做什么?
你可以简单地:
for old_str, new_str in zip(old, new):
my_str = my_str.replace(old_str, new_str, 1)
https://docs.python.org/3/library/stdtypes.html#str.replace 您可以提供替换参数以指定要替换的出现次数。
不需要条件,因为如果 old_str
不存在,无论如何都不会被替换。