2016-04-05 7 views
1

Я хотел бы написать небольшую программу на Python, которая берет текст на иврите, преобразует каждую букву в ее номера ghematria, суммирует числа в каждом слове, а затем печатает слова как числа.Ghematria in Python: буквы на иврите и цифры

начать я думал установить алеф Beth переменные, как:

א=1 
ב=2 
ג=3 
ד=4 

и так далее ...

Имейте в виду, что поскольку еврейские буквы strong right-to-left characters, все начинает показывать вверх справа налево после одного. Эти задания только посмотреть назад; они really are valid в Python 3.

Теперь, когда я установил переменный я задавался вопрос, как я мог бы получить номера для всех слов из текстового файла (UNICODE 8 конечно) .. любой помощи для нуба?

+1

«Имейте в виду, что, так как мы используем древнееврейском значение переменной устанавливается на левой части знака =» <- Я не уверен, я следую за то, что вы там делаете. Имейте в виду, что мы используем Python? – timgeb

+0

, если вы хотите установить переменную, используя еврейскую букву, такую ​​как aleph = 1, отображается как 1 = א ... – Giorgio

+0

Я понял это, но как это имеет отношение к замене и суммированию, которое вы хотите достичь? – timgeb

ответ

2

Имейте в виду, что, так как мы используем древнееврейском значение переменной устанавливается на левой части знака = ... и не в праве ...

Python не забота. 1 = א не будет работать, поскольку вы пытаетесь присвоить значение int.

С другой стороны, с этим не будет приятно работать. Идентификаторы Unicode поддерживаются только Python 3, но я бы не пошел по этой дороге.

Что бы я сделал, это словарь с буквами в виде ключей и цифр в качестве значений.

Затем просто прочитайте текстовый файл, преобразуйте каждую букву в ее число и сумму.

EDIT Что-то в этом роде. Обратите внимание, что у меня только 3 буквы в словаре, потому что я ленив, и что я , используя метод словаря get(), поэтому я не получу KeyError на пробелы, новые строки и знаки препинания.

vals = {'א': 1, 
     'ב': 2, 
     'ג': 3} 

with open(path_to_file, encoding='utf-8') as f: 
    text = f.read() 
    sum = 0 
    for letter in text: 
     sum += vals.get(letter, 0) 

print(sum) 
+0

очень интересно. Я попробую это и сообщит. Спасибо большое, действительно, – Giorgio

+0

Является ли ваш словарь сломанным? '{'1:' א,' это то, как он читает мне. Или это просто unicode barfing? –

+1

@WayneWerner: символ справа налево от еврейской буквы наследуется следующим текстом. [Подробности сложны.] (Http://unicode.org/reports/tr9/) – user2357112