Форум сайта python.su
#!/usr/bin/env python3 # у нас есть строка a = bytearray('1 first 2 second 3', 'utf-8') # и нужные нам смещения slice1 = [2, 7] slice2 = [10, 16] # магия строк :) #a[slice1[0]:slice1[1]] = b'qwertqwertqwert' a[slice2[0]:slice2[1]] = b'asdfghasdfghasdfghbb' # По-отдельности работает! # Как сделать так, # чтобы получилось bytearray(b'1 qwertqwertqwert 2 asdfghasdfghasdfghbb 3') ? # # уточнение: да, строка, на которую мы заменяем, может быть короче, такая же или длиннее смещения print(a)
Офлайн
>>> def replace(string, slc_seq, rep): ... for slc in reversed(slc_seq): ... string[slc[0]:slc[1]] = rep ... >>> a = bytearray('1 first 2 second 3', 'utf-8') >>> a bytearray(b'1 first 2 second 3') >>> >>> replace(a, ((2, 7), (10, 16)), b'asdfghasdfghasdfghbb') >>> a bytearray(b'1 asdfghasdfghasdfghbb 2 asdfghasdfghasdfghbb 3') >>> >>> b = bytearray('1 first 2 second 3', 'utf-8') >>> b bytearray(b'1 first 2 second 3') >>> >>> replace(b, ((2, 7), (10, 16)), b'abc') >>> b bytearray(b'1 abc 2 abc 3') >>>
Отредактировано py.user.next (Апрель 14, 2022 23:33:32)
Офлайн