Необходимо выполнить транслитерацию документа и вернуть матрицу каждой строкой которой является предложение исходного документа

Здравствуйте попалась интересная задачка: Необходимо написать функцию, принимающую в качестве аргумента текстовый документ на русском языке, выполняющую транслитерацию документа и возвращающую числовую матрицу, каждой строкой которой является предложение исходного документа. Знаки препинания в таких предложениях следует проигнорировать, а слова - заменить суммой порядковых номеров составляющих их букв в латинском алфавите. Отсутствующие позиции заполнить нулями.

Первая часть задания не вызывает трудностей, создал словарь

def myfunction(filename):
    with open(filename ,encoding="utf8") as file:
        in_file = file.read()
    dictionary = {'а':'a','б':'b','в':'v','г':'g','д':'d','е':'e','ё':'yo',
      'ж':'zh','з':'z','и':'i','й':'i','к':'k','л':'l','м':'m','н':'n',
      'о':'o','п':'p','р':'r','с':'s','т':'t','у':'u','ф':'f','х':'h',
      'ц':'c','ч':'ch','ш':'sh','щ':'sch','ъ':'','ы':'y','ь':'','э':'e',
      'ю':'u','я':'ya', 'А':'A','Б':'B','В':'V','Г':'G','Д':'D','Е':'E','Ё':'Yo',
      'Ж':'Zh','З':'Z','И':'I','Й':'I','К':'K','Л':'L','М':'M','Н':'N',
      'О':'O','П':'P','Р':'R','С':'S','Т':'T','У':'U','Ф':'F','Х':'H',
      'Ц':'C','Ч':'Ch','Ш':'Sh','Щ':'Sch','Ъ':'','Ы':'y','Ь':'','Э':'E',
      'Ю':'U','Я':'Ya'}
       for i in dictionary :
            in_file = in_file.replace(i,dictionary[i])
       print (in_file)
      

Потом я предположил что необходимо соотнести каждую букву к её порядковому номеру в алфавите, то есть сделать обратный перевод только уже в формате 'Буква' :'Номер'

dictionary1 = {
        'A':'1', 'B':'2', 'C':'3', 'D':'4' , 
        'E':'5' , 'F':'6','G':'7', 'H':'8',
        'I':'9','J':'10','K':'11','L':'12',
        'M':'13','N':'14','O':'15','P':'16','Q':'17',
        'R':'18','S':'19','T':'20','U':'21',
        'V':'22','W':'23','X':'24',
        'Y':'25','Z':'26','a':'1', 'b':'2', 'c':'3', 'd':'4' , 
        'e':'5' , 'f':'6','g':'7', 'h':'8',
        'i':'9','j':'10','k':'11','l':'12',
        'm':'13','n':'14','o':'15','p':'16','q':'17',
        'r':'18','s':'19','t':'20','u':'21',
        'v':'22','w':'23','x':'24',
        'y':'25','z':'26', ' ':' ', '\n':'0', '.':'\n'}
         for i in dictionary1 :
        in_file = in_file.replace(i,dictionary1[i])
        print (in_file)

Таким образом получаю на выходе уже строку из условно цифр (так как тип относиться строковому) На этом этапе я встрял и не могу дальше додуматься к решению. Подскажите кто знает


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

Автор решения: ganz

ну всё делал верно... и видимо встрял на пробелах... в итоге же должно получится ааа-3 ббб ввв - 6 9 следовательно нужно промежуточная замена пробела, для того чтобы можно было отличать цифры одного слова от цифр другого слова то есть ббб ввв - 2 2 2 3 3 3 между двойками и тройками лишь один пробел, то есть теряется граница слова. Предлагаю изначально заменить пробел символом табуляции, это и парсится легко и в текстовом редакторе отображается как пробелы

→ Ссылка