#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Mon Jan 25 10:58:37 2021 @author: villersd Un palindrome est un texte ou une séquence plus générale (notes de musique, code génétique,...), dont l'ordre des lettres (ou des notes,...) reste le même qu'on le lise de gauche à droite ou de droite à gauche. Source : https://fr.wikipedia.org/wiki/Palindrome """ import unicodedata def palindrome(string_to_check): if string_to_check.lower().replace(' ', '') == string_to_check.lower().replace(' ', '')[::-1]: return True else: return False def remove_accents(input_str): """ Les lettres accentuées viennent compliquer le problème... cf. https://stackoverflow.com/questions/517923/what-is-the-best-way-to-remove-accents-normalize-in-a-python-unicode-string """ nfkd_form = unicodedata.normalize('NFKD', input_str) return u"".join([c for c in nfkd_form if not unicodedata.combining(c)]) string0 = 'Esope reste ici et se repose' print(string0, palindrome(string0)) string1 = 'Ésope reste ici et se repose' print(string1, palindrome(string1)) print(string1, remove_accents(string1), palindrome(remove_accents(string1)))