doza_and
У меня каждый второй скрипт такой.
Ты имеешь в виду обработку данных, я же говорю про работу со строками. Не про данные, а про строки текстовые. Какая разница между этими понятиями? В строках есть понятие символа, а в данных такого понятия нет. И юникод позволяет работать вот с этими символами.
doza_and
Найдите в своем коде и приведите пример когда вам надо было позиционироваться в строке именно по номеру буквы.
Я давал ссылку, которую ты не читал, там есть пример. Берётся и открывается файл уже в заданной кодировке и проводятся переходы по символам. Не через tell(), а через seek(), который в текстовом режиме именно по символам прыгает, а не по байтам. И позицию в файле ты можешь запомнить именно символьную и всегда знать, какой он по счёту в файле.
doza_and
Ну и где тут квадратный? это алгоритм линейной сложности. Работа с потоком символов.
Квадрат здесь в этом раскодировании необходимом.
Вот тебе строка без юникода
>>> '탡탡탡'
'\xed\x83\xa1\xed\x83\xa1\xed\x83\xa1'
>>>
Напиши функцию, которая возвращает третий символ, если первые два символа равны. Юникод использовать нельзя. Покажи линейность, о которой ты говоришь тут налево и направо.
doza_and
Найдите в своем коде и приведите пример когда вам надо было позиционироваться в строке именно по номеру буквы.
Ладно, вот тебе задача: поступает поток символов текста, нужно его разделить по абзацам и вернуть поток абзацев. (Абзац - десять предложений.)
Вот тебе ещё задача
'킠킡킢킣키킥킦킧킨킩킪킫킬킭킮킯킰킱킲킳킴킵킶킷킸킹킺킻킼킽킾킿타탁탂탃탄탅탆탇탈탉탊탋탌탍탎탏'
Вот для этой строки напиши функцию, которая разбивает её на куски длины n.
Вызываешь, например, f(s, 5) и она возвращает тебе последовательность по пять иероглифов, а если вызываешь f(s, 6), то она возвращает тебе последовательность по шесть иероглифов. Юникод использовать нельзя.
А функцию назовёшь fold(). Когда она будет готова, тебя ждёт сюрприз.
Могу вообще дикую задачу дать (с реальным текстом, а не удобненько подготовленным), но ты эти хотя бы сделай. Судя по тому, как ты время меряешь, ты их не потянешь.