Найти - Пользователи
Полная версия: bytearray slice одновременная замена
Начало » Python для новичков » bytearray slice одновременная замена
1
snakeous
 #!/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)
py.user.next
  
>>> 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')
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB