Проблема в задаче с шифрованием текста. RegEx

Всем привет. Возникла проблема с шифрованием текста. Суть задачи: есть текст-контейнер и в нём нужно спрятать другой текст. Вся работа идёт с файлами. Файл, который прячем представляется в виде последовательности бит. Если бит = 1, то удваиваем пробел в тексте, куда прячем, если = 0, то без изменений.

Я реализовал это с помощь RegEx, но регулярка не понимает конца строки, на выходе я получаю одну целую строку в документе, а не столбец из строк, которые я заносил. Не могу реализовать ограничитель, чтобы чтение и запись происходили построчно.

#!/usr/bin/env python3
# -*- coding: utf8 -*-
import os
import re
def start():
while True:
    selection = int(input("\nОбратите вниание, что текст-контейнер не сможет вместить текст любой длинны. \n Если вы хотите зашифровать длинное сообщение, то увеличьте объём текст-контейнера. \n В противном случае алгоритм зашифрует только часть вашего сообщения\n -------------- \nВыберите один из вариантов: \n -------------- \n 1 - Закодировать сообщение \n 2 - Раскодировать сообщение \n 3 - Выход \n"))
    if selection == 1 and os.stat("text.txt").st_size != 0:
        encode()
    elif selection == 2:
        decode()
    elif selection == 3:
        break
    else:
        print("Что-то пошло не так:\n 1)Ваш файл контейнер пустой\n 2)Вы ввели неправильный символ для работы с программой...")
def encode():
with open("text.txt", "r") as f:
    text = f.read()
with open("encode.txt", "r") as a:
    encoded = a.read()


def generator():
    for i in bytes(encoded, encoding='utf-8'):
        for bit in '{:0>8b}'.format(i):
            yield bit
    while True:
        yield '0'

g = generator()

def insertion(m):
    bit = g.__next__()
    return '  ' if bit == '1' else ' '

t2 = re.sub(r'\s+', insertion, text)
print(t2)
with open("result.txt", "w") as f:
    f.write(''.join(t2))
def decode():
with open("result.txt", "r") as a:
    text2 = a.read()
ls = []

def parse(m):
    ls.append('1' if m.group(0) == '  ' else '0')
    return ' '
re.sub(r'\s+', parse, text2)
t3 = []
for i in range(0, len(ls), 8):
    t3.append(chr(int(''.join(ls[i:i + 8]), 2)))

    with open("decode.txt", "w") as f:
        f.write(''.join(t3))
start()
#пример файла text
'''''
1 1    1         1  1   1    1 
1 1    1         1  1   1    1 
1 1    1         1  1   1    1 
1 1    1         1  1   1    1 
1 1    1         1  1   1    1 
1 1    1         1  1   1    1 
1 1    1         1  1   1    1 
1 1    1         1  1   1    1 
'''''

Ответы (1 шт):

Автор решения: Аркадий

Документация:

\s

For 8-bit (bytes) patterns: Matches characters considered whitespace in the ASCII character set; this is equivalent to [ \t\n\r\f\v].

Укажите явно множество тех символов, которые хотите заменять.

→ Ссылка