1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #! python3
# coding: utf-8
from termcolor import cprint
import unicodedata
"""
Prise en charge partielle de l'alphabet morse, voir : https://fr.wikipedia.org/wiki/Code_Morse_international
Attention, morse_vers_texte() ne fonctionne généralement pas avec du code morse généré ailleurs.
"""
signes = ['.-', '-...', '-.-.', '.', '..-.', '--.', '....', '..', '.---', '-.-', '.-..',
'--', '-.', '---', '.--.', '--.-', '.-.', '...', '-', '..-', '...-', '.--', '-..-', '-.--',
'--..', '.-.-.-', '--..--', '..--..', '.----.', '-.-.--', '---...', '-.-.-.', '.-..-.',
'-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
lettres = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '.', ',', '?', "'", '!', ':', ';', '"',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
S2L = dict(zip(signes, lettres))
L2S = dict(zip(lettres, signes))
def texte_vers_morse(texte):
"""Transforme un texte accentués, sans retour à la ligne, en morse"""
texte = unicodedata.normalize('NFKD', texte).encode(
'ASCII', 'ignore').decode('ASCII')
texte = texte.upper()
lst_words = texte.split(' ')
texte_signes = ''
for word in lst_words:
texte_signes += ' '
for lettre in word:
texte_signes += ' ' + L2S[lettre]
return texte_signes[3:]
def morse_vers_texte(morse):
"""Transforme le code morse généré par texte_vers_morse() en texte ASCII"""
lst_words = morse.split(' ')
lst_signes = [word.split(' ') for word in lst_words]
texte_lettres = ''
for word in lst_signes:
texte_lettres += ' '
for signe in word:
if signe != '':
texte_lettres += S2L[signe]
return texte_lettres[1:]
if __name__ == "__main__":
morse = texte_vers_morse(
"Bonjour, je suis débutant en Python. Je teste à tout va, c'est plus de 200 tests réalisés !")
cprint(morse, 'red')
texte = morse_vers_texte(morse)
cprint(texte, 'green')
''' |