2016-04-05 1 views
1

Je voudrais écrire un petit programme en Python qui prend un texte hébreu, convertit chaque lettre en ses nombres de ghematria, somme les nombres dans chaque mot, puis imprime le les mots comme des nombres.Ghematria en Python: lettres hébraïques aux nombres et somme

pour commencer je pensais à définir les variables beth aleph, comme:

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

et ainsi de suite ...

Gardez à l'esprit que, puisque les lettres hébraïques sont strong right-to-left characters, tout commence à montrer de droite à gauche après un. Ces affectations juste regardent en arrière; ils really are valid en Python 3.

Maintenant que j'ai mis les variables que je me demandais comment pourrais-je obtenir les chiffres pour tous les mots d'un fichier txt (unicode 8 bien sûr) .. toute aide pour un noob?

+1

« Gardez à l'esprit que, puisque nous utilisons la valeur de Hebrew la variable est définie à gauche du signe = » <- Je ne suis pas sûr que je suis ce que vous faites là. Gardez à l'esprit que nous utilisons Python? – timgeb

+0

si vous voulez définir une variable en utilisant une lettre hébraïque comme aleph = 1 il est affiché comme 1 = א ... – Giorgio

+0

Je l'ai compris, mais en quoi cela est-il pertinent pour le remplacement et la sommation que vous voulez réaliser? – timgeb

Répondre

2

Gardez à l'esprit que, puisque nous utilisons la valeur de Hebrew la variable est définie à gauche du signe = ... et non à droite ...

Python ne se soucier. 1 = א ne fonctionnera pas car vous essayez d'attribuer une valeur à int.

L'autre solution ne sera pas non plus un plaisir de travailler avec. Les identifiants Unicode sont supportés uniquement par Python 3, mais je ne le ferais pas.

Ce que je ferais est d'avoir un dictionnaire avec des lettres comme des clés et des nombres comme valeurs.

Ensuite, lisez simplement le fichier texte, convertissez chaque lettre en son nombre et sa somme.

EDIT Quelque chose de ce genre. Notez que j'ai seulement 3 lettres dans le dictionnaire parce que je suis paresseux, et que je suis en utilisant la méthode get() du dictionnaire, donc je ne vais pas obtenir KeyError sur les espaces, les nouvelles lignes et les signes de ponctuation.

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

très intéressant. Je vais essayer et signaler. Merci beaucoup en effet – Giorgio

+0

Votre dictionnaire est-il cassé? '{'1:' א,' est ce qu'il me lit. Ou est-ce juste un barfing unicode? –

+1

@WayneWerner: La lettre de droite de la lettre hébraïque est héritée par le texte suivant. [Les détails sont compliqués.] (Http://unicode.org/reports/tr9/) – user2357112