Найти - Пользователи
Полная версия: bytearray slice - Юникод и кириллица
Начало » Python для новичков » bytearray slice - Юникод и кириллица
1
snakeous
 #!/usr/bin/env python3
def func(string, eslice, replace):
    print(f"STRING: '{string}' SLICE: '{string[eslice[0]:eslice[1]]}'") # debug
    encoding = 'utf-8'
    b = bytearray(string, encoding)
    b[eslice[0]:eslice[1]] = replace.encode(encoding)
    return b.decode(encoding)
assert func('a test', (2,6), 'abcd') == 'a abcd'
assert func('b тест', (2,6), 'абвгде') == 'b абвгде'
assert func('a qwer a', (2,6), 'abcdef') == 'a abcdef a'
assert func('c qwer абвг c', (2,6), 'фываолдж') == 'c фываолдж абвг c'
assert func('⣿ abcd тест ⣿', (2,6), 'олдж') == '⣿ олдж тест ⣿'

Если указать encoding = ‘cp1251’, то проходятся все ассерты, кроме последнего
Как изменить функцию так, чтобы проходились все ассерты?
xam1816
snakeous
Как изменить функцию так, чтобы проходились все ассерты?
 def func(string, eslice, replace):
    return string[:eslice[0]] + replace + string[eslice[1]:]
 
assert func('a test', (2,6), 'abcd') == 'a abcd'
assert func('b тест', (2,6), 'абвгде') == 'b абвгде'
assert func('a qwer a', (2,6), 'abcdef') == 'a abcdef a'
assert func('c qwer абвг c', (2,6), 'фываолдж') == 'c фываолдж абвг c'
assert func('⣿ abcd тест ⣿', (2,6), 'олдж') == '⣿ олдж тест ⣿'
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