Chercher les accent dans un texte par python

Résolu/Fermé
masal - 29 mars 2022 à 16:49
 masal - 30 mars 2022 à 13:46
bonjour je suis débutant en programmation et j'ai besoin d'un programme qui cherche les caractères spéciaux comme (é,à,è,...) dans un texte et les remplace [par exemple (é=\'e)] alors j'ai pensé à en utilisant un tableau dans lequel il y a les caractères spéciaux avec leurs correspondances mais je ne sais pas comment je peux le faire

2 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 30 mars 2022 à 14:04
Bonjour,

Tu peux t'inspirer de ce qui est fait dans ce fichier :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

MAP_TO_INTERNATIONAL = {
    # Upper case
    "Á": "A",
    "À": "A",
    "Ä": "A",
    "Ć": "C",
    "Ç": "C",
    "Đ": "D",
    "É": "E",
    "Ê": "E",
    "È": "E",
    "Ë": "E",
    "Í": "I",
    "Î": "I",
    "Ï": "I",
    "Ł": "L",
    "Ö": "O",
    "Ô": "O",
    "Û": "U",
    "Ü": "U",
    "Š": "S",
    # Lower case
    "á": "a",
    "à": "a",
    "ä": "a",
    "ć": "c",
    "ç": "c",
    "đ": "d",
    "é": "e",
    "ê": "e",
    "è": "e",
    "ë": "e",
    "í": "i",
    "î": "i",
    "ï": "i",
    "ł": "l",
    "ö": "o",
    "ô": "o",
    "û": "u",
    "ü": "u",
    "š": "s",
    # Only lower
    "ß": "ss",
}

def to_international_string(s: str) -> str:
    translator = str.maketrans(MAP_TO_INTERNATIONAL)
    return s.translate(translator)


Bonne chance
1
merci beaucoup pour votre aide
0
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
Modifié le 29 mars 2022 à 18:10
Bonjour,

J'ai effectué plutôt l'inverse sur des fichiers de playlist musicaux où les chemins d'accès contenaient des caractères %xx, par exemple %20 = blanc, %C3%A8 = è

Voilà un exemple qui traite cela,
car = []
with open("UrlUncTranscodage.txt", encoding="utf8") as fichier:
   for ligne in fichier:
      car.append((ligne[0:1],ligne.rstrip('\n')[2:]))
print(car)
line="file://nasina/Multimedia/Musique/CD/Alain%20Bashung/Bleu%20P%C3%A9trole/05-V%C3%A9nus.mp4</location>"
for i in range(len(car)):
   print(car[i][0],car[i][1])
   line=line.replace(car[i][1],car[i][0])

print(line)


avec le fichier en entrée qui constitue le tableau de caractères à traiter :
  %20
! %21
" %22
# %23
$ %24
% %25
& %26
' %27
( %28
) %29
¤ %2A
+ %2B
, %2C
- %2D
. %2E
/ %2F
: %3A
; %3B
< %3C
= %3D
> %3E
? %3F
@ %40
[ %5B
\ %5C
] %5D
^ %5E
_ %5F
` %60
{ %7B
| %7C
} %7D
~ %7E
« %C2%AB
» %C2%BB
À %C3%80
 %C3%82
Ç %C3%87
È %C3%88
É %C3%89
Ê %C3%8A
Ë %C3%8B
Î %C3%8E
Ï %C3%8F
Ô %C3%94
Ù %C3%99
Û %C3%9B
à %C3%A0
â %C3%A2
ç %C3%A7
è %C3%A8
é %C3%A9
ê %C3%AA
ë %C3%AB
î %C3%AE
ï %C3%AF
ô %C3%B4
ù %C3%B9
û %C3%BB
' &#39;
& &amp;



0
merci beaucoup
excuser pour je vais vous embêtez un peu mais je n'ai pas bien compris le programme surtout cette ligne [ car.append((ligne[0:1],ligne.rstrip('\n')[2:])) ] si vous pouvez et si c'est possible d'ajouter des commentaires , et merci beaucoup
0
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235 > masal
Modifié le 30 mars 2022 à 13:45
Le fichier contient, nouveau caractère, ancien caractère. Il est structuré ainsi car le nouveau caractère fait toujours une position, l'ancien ayant une longueur n. Pour toi ce devrait être ancien, nouveau puisque tu veux convertir un caractère en 3.

car.append((ligne[0:1],ligne.rstrip('\n')[2:])) ]
j'ajoute au tableau car, le tuple(nouveau,ancien) en découpant la ligne du fichier, le premier caractère, puis à compter de la position 2 jusqu'à la fin en supprimant le caractère fin de ligne (\n)

Après je traite la chaine du nom de fichier, en faisant une boucle pour traiter tous les caractères du tableau car[] et remplacer l'ancienne valeur par la nouvelle
0
masal > jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024
30 mars 2022 à 13:46
je vous remercie pour votre explication , j'ai bien compris maintenant
0