python字符串替换使用for循环和if else

时间:2021-04-17 22:41:52

标签: python for-loop if-statement str-replace sequential

我是 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

2 个答案:

答案 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 的使用不正确。

rangelower(包含)到 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 不存在,无论如何都不会被替换。