Chercher les accent dans un texte par python

Résolu
masal -  
 masal -
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
A voir également:

2 réponses

mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
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
masal
 
merci beaucoup pour votre aide
0
jee pee Messages postés 41513 Date d'inscription   Statut Modérateur Dernière intervention   9 716
 
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
masal
 
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 41513 Date d'inscription   Statut Modérateur Dernière intervention   9 716 > masal
 
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 41513 Date d'inscription   Statut Modérateur Dernière intervention  
 
je vous remercie pour votre explication , j'ai bien compris maintenant
0