Bonjour,
toujours dans le but de renomme des fichiers, je n'arrive pas à utiliser
la solution suivante:
##############################################
import os, os.path, string, sys
from unicodedata import decomposition
def remove_accent(car):
deco = decomposition(car)
if deco:
return chr(int(deco.split()[0],16))
else:
return car
s=u"Vous êtes extrêmement sympas de m'avoir dépanné"
print "".join([remove_accent(c) for c in s])
##############################################
J'ai :
##############################################
in remove_accent(car)
ValueError: invalid literal for int(): <super>
##############################################
Je n'arrive pas à interpréter ce message.
Pourriez-vous me donner un petit coup de main s'il vous plait?
Merci d'avance.
--
SPIP, phpNuke, Plone, opengroupware... c'est bien
CPS c'est mieux: http://www.cps-project.org/
Hébergement de sites CPS: http://www.objectis.org/
Pour cela, j'ai dû enregistrer le script en UTF-8, en précisant,au début du script : # -*- coding: cp1252 -*-
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du script.
Michel Claveau
Amaury
Bonjour, toujours dans le but de renomme des fichiers, je n'arrive pas à utiliser la solution suivante:
############################################## import os, os.path, string, sys from unicodedata import decomposition
def remove_accent(car): deco = decomposition(car) if deco: return chr(int(deco.split()[0],16)) else: return car s=u"Vous êtes extrêmement sympas de m'avoir dépanné" print "".join([remove_accent(c) for c in s]) ##############################################
J'ai : ############################################## in remove_accent(car) ValueError: invalid literal for int(): <super> ##############################################
Question habituelle dans ce cas: Quel est le "coding" utilisé par python? ça peut changer la façon dont les caractères accentués sont compris... Il manque une ligne -*- coding:xxx -*- pour en être sûr...
Ceci dit, je suis curieux de savoit quel est le caractère qui provoque cette erreur, ce que donne la commande suivante: [decomposition(c) for c in s]
-- Amaury
Bonjour,
toujours dans le but de renomme des fichiers, je n'arrive pas à utiliser
la solution suivante:
##############################################
import os, os.path, string, sys
from unicodedata import decomposition
def remove_accent(car):
deco = decomposition(car)
if deco:
return chr(int(deco.split()[0],16))
else:
return car
s=u"Vous êtes extrêmement sympas de m'avoir dépanné"
print "".join([remove_accent(c) for c in s])
##############################################
J'ai :
##############################################
in remove_accent(car)
ValueError: invalid literal for int(): <super>
##############################################
Question habituelle dans ce cas: Quel est le "coding" utilisé par
python? ça peut changer la façon dont les caractères accentués sont
compris... Il manque une ligne -*- coding:xxx -*- pour en être sûr...
Ceci dit, je suis curieux de savoit quel est le caractère qui provoque
cette erreur, ce que donne la commande suivante:
[decomposition(c) for c in s]
Bonjour, toujours dans le but de renomme des fichiers, je n'arrive pas à utiliser la solution suivante:
############################################## import os, os.path, string, sys from unicodedata import decomposition
def remove_accent(car): deco = decomposition(car) if deco: return chr(int(deco.split()[0],16)) else: return car s=u"Vous êtes extrêmement sympas de m'avoir dépanné" print "".join([remove_accent(c) for c in s]) ##############################################
J'ai : ############################################## in remove_accent(car) ValueError: invalid literal for int(): <super> ##############################################
Question habituelle dans ce cas: Quel est le "coding" utilisé par python? ça peut changer la façon dont les caractères accentués sont compris... Il manque une ligne -*- coding:xxx -*- pour en être sûr...
Ceci dit, je suis curieux de savoit quel est le caractère qui provoque cette erreur, ce que donne la commande suivante: [decomposition(c) for c in s]
-- Amaury
R12y
On Tue, 04 Oct 2005 23:01:27 +0200, Do Re Mi chel La Si Do wrote:
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du script.
Exactement. Je viens de forcer l'enregistrement du fichier en iso-8859-15 et c'est passé.
Par contre, dans la mesure ou j'ai déjà #!/usr/bin/python en première ligne du script, ou puis-je placer cette ligne de coding? (J'ai déjà posé la question sur le groupe Emacs, j'apporterais la réponse une fois obtenue)
-- SPIP, phpNuke, Plone, opengroupware... c'est bien CPS c'est mieux: http://www.cps-project.org/ Hébergement de sites CPS: http://www.objectis.org/
On Tue, 04 Oct 2005 23:01:27 +0200, Do Re Mi chel La Si Do wrote:
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du
script.
Exactement.
Je viens de forcer l'enregistrement du fichier en iso-8859-15 et c'est
passé.
Par contre, dans la mesure ou j'ai déjà #!/usr/bin/python en première
ligne du script, ou puis-je placer cette ligne de coding?
(J'ai déjà posé la question sur le groupe Emacs, j'apporterais la réponse
une fois obtenue)
--
SPIP, phpNuke, Plone, opengroupware... c'est bien
CPS c'est mieux: http://www.cps-project.org/
Hébergement de sites CPS: http://www.objectis.org/
On Tue, 04 Oct 2005 23:01:27 +0200, Do Re Mi chel La Si Do wrote:
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du script.
Exactement. Je viens de forcer l'enregistrement du fichier en iso-8859-15 et c'est passé.
Par contre, dans la mesure ou j'ai déjà #!/usr/bin/python en première ligne du script, ou puis-je placer cette ligne de coding? (J'ai déjà posé la question sur le groupe Emacs, j'apporterais la réponse une fois obtenue)
-- SPIP, phpNuke, Plone, opengroupware... c'est bien CPS c'est mieux: http://www.cps-project.org/ Hébergement de sites CPS: http://www.objectis.org/
R12y
Voici le code qui fait "tout" le cacher des charges:
Noter l'encodage-decodage unicode....
import os, os.path, string, sys from unicodedata import decomposition
opj=os.path.join sa=sys.argv
def remove_accent_char(car): decoÞcomposition(car) if deco: return unichr(int(deco.split()[0],16)) else: return car
def remove_accent_str(s): return "".join([remove_accent_char(c) for c in unicode(s, 'latin-1')]) ################################################### unicodage
# renommage des "feuilles" d'abord. for (root, dirs, files) in os.walk(sa[1], topdownúlse): for a_file in files: old=opj(root, a_file) new=str(remove_accent_str(opj(root, a_file.replace(sa[2],sa[3])))) ### desunicodage print old + "->" + new os.rename(old,new) ###################################
# renommage en remontant des répertoires for (root, dirs, files) in os.walk(sa[1], topdownúlse): for a_dir in dirs: old=opj(root, a_dir) new=str(remove_accent_str(opj(root, a_dir.replace(sa[2],sa[3])))) ### desunicodage print old + "->" + new os.rename(old,new) ########################################
-- SPIP, phpNuke, Plone, opengroupware... c'est bien CPS c'est mieux: http://www.cps-project.org/ Hébergement de sites CPS: http://www.objectis.org/
Voici le code qui fait "tout" le cacher des charges:
Noter l'encodage-decodage unicode....
import os, os.path, string, sys
from unicodedata import decomposition
opj=os.path.join
sa=sys.argv
def remove_accent_char(car):
decoÞcomposition(car)
if deco:
return unichr(int(deco.split()[0],16))
else:
return car
def remove_accent_str(s):
return "".join([remove_accent_char(c) for c in unicode(s, 'latin-1')])
################################################### unicodage
# renommage des "feuilles" d'abord.
for (root, dirs, files) in os.walk(sa[1], topdownúlse):
for a_file in files:
old=opj(root, a_file)
new=str(remove_accent_str(opj(root, a_file.replace(sa[2],sa[3]))))
### desunicodage
print old + "->" + new
os.rename(old,new)
###################################
# renommage en remontant des répertoires
for (root, dirs, files) in os.walk(sa[1], topdownúlse):
for a_dir in dirs:
old=opj(root, a_dir)
new=str(remove_accent_str(opj(root, a_dir.replace(sa[2],sa[3]))))
### desunicodage
print old + "->" + new
os.rename(old,new)
########################################
--
SPIP, phpNuke, Plone, opengroupware... c'est bien
CPS c'est mieux: http://www.cps-project.org/
Hébergement de sites CPS: http://www.objectis.org/
Voici le code qui fait "tout" le cacher des charges:
Noter l'encodage-decodage unicode....
import os, os.path, string, sys from unicodedata import decomposition
opj=os.path.join sa=sys.argv
def remove_accent_char(car): decoÞcomposition(car) if deco: return unichr(int(deco.split()[0],16)) else: return car
def remove_accent_str(s): return "".join([remove_accent_char(c) for c in unicode(s, 'latin-1')]) ################################################### unicodage
# renommage des "feuilles" d'abord. for (root, dirs, files) in os.walk(sa[1], topdownúlse): for a_file in files: old=opj(root, a_file) new=str(remove_accent_str(opj(root, a_file.replace(sa[2],sa[3])))) ### desunicodage print old + "->" + new os.rename(old,new) ###################################
# renommage en remontant des répertoires for (root, dirs, files) in os.walk(sa[1], topdownúlse): for a_dir in dirs: old=opj(root, a_dir) new=str(remove_accent_str(opj(root, a_dir.replace(sa[2],sa[3])))) ### desunicodage print old + "->" + new os.rename(old,new) ########################################
-- SPIP, phpNuke, Plone, opengroupware... c'est bien CPS c'est mieux: http://www.cps-project.org/ Hébergement de sites CPS: http://www.objectis.org/
Jonathan Barnoud
On Tue, 04 Oct 2005 23:01:27 +0200, Do Re Mi chel La Si Do wrote:
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du script.
Exactement. Je viens de forcer l'enregistrement du fichier en iso-8859-15 et c'est passé.
Par contre, dans la mesure ou j'ai déjà #!/usr/bin/python en première ligne du script, ou puis-je placer cette ligne de coding? (J'ai déjà posé la question sur le groupe Emacs, j'apporterais la réponse une fois obtenue)
Personellement je met la ligne de coding en deuxieme et ça marche impec.
Jonathan Barnoud
On Tue, 04 Oct 2005 23:01:27 +0200, Do Re Mi chel La Si Do wrote:
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du
script.
Exactement.
Je viens de forcer l'enregistrement du fichier en iso-8859-15 et c'est
passé.
Par contre, dans la mesure ou j'ai déjà #!/usr/bin/python en première
ligne du script, ou puis-je placer cette ligne de coding?
(J'ai déjà posé la question sur le groupe Emacs, j'apporterais la réponse
une fois obtenue)
Personellement je met la ligne de coding en deuxieme et ça marche impec.
On Tue, 04 Oct 2005 23:01:27 +0200, Do Re Mi chel La Si Do wrote:
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du script.
Exactement. Je viens de forcer l'enregistrement du fichier en iso-8859-15 et c'est passé.
Par contre, dans la mesure ou j'ai déjà #!/usr/bin/python en première ligne du script, ou puis-je placer cette ligne de coding? (J'ai déjà posé la question sur le groupe Emacs, j'apporterais la réponse une fois obtenue)
Personellement je met la ligne de coding en deuxieme et ça marche impec.
Jonathan Barnoud
marcoplaut
Le Wed, 05 Oct 2005 07:50:10 +0200, Jonathan Barnoud a écrit :
On Tue, 04 Oct 2005 23:01:27 +0200, Do Re Mi chel La Si Do wrote:
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du script.
Exactement. Je viens de forcer l'enregistrement du fichier en iso-8859-15 et c'est passé.
Par contre, dans la mesure ou j'ai déjà #!/usr/bin/python en première ligne du script, ou puis-je placer cette ligne de coding? (J'ai déjà posé la question sur le groupe Emacs, j'apporterais la réponse une fois obtenue)
Personellement je met la ligne de coding en deuxieme et ça marche impec.
Jonathan Barnoud
Bonjours chez moi j'ai le code suivant :
#!/usr/bin/python # -*- coding: cp1252 -*-
import os, os.path, string, sys from unicodedata import decomposition
opj=os.path.join sa=sys.argv
def remove_accent_char(car): decoÞcomposition(car) if deco: return unichr(int(deco.split()[0],16)) else: return car
def remove_accent_str(s): return "".join([remove_accent_char(c) for c in unicode(s, 'latin-1')]) ################################################### unicodage
# renommage des "feuilles" d'abord. for (root, dirs, files) in os.walk(sa[1], topdownúlse): for a_file in files: old=opj(root, a_file) new=str(remove_accent_str(opj(root, a_file.replace(sa[2],sa[3])))) ### desunicodage print old + "->" + new os.rename(old,new) ###################################
# renommage en remontant des répertoires for (root, dirs, files) in os.walk(sa[1], topdownúlse): for a_dir in dirs: old=opj(root, a_dir) new=str(remove_accent_str(opj(root, a_dir.replace(sa[2],sa[3])))) ### desunicodage print old + "->" + new os.rename(old,new) ########################################
et j'ai cette erreur :
Traceback (most recent call last): File "./scriptvireraccents.py", line 22, in ? for (root, dirs, files) in os.walk(sa[1], topdownúlse): IndexError: list index out of range
quelqu'un a-til une suggestion ?
Le Wed, 05 Oct 2005 07:50:10 +0200, Jonathan Barnoud a écrit :
On Tue, 04 Oct 2005 23:01:27 +0200, Do Re Mi chel La Si Do wrote:
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du
script.
Exactement.
Je viens de forcer l'enregistrement du fichier en iso-8859-15 et c'est
passé.
Par contre, dans la mesure ou j'ai déjà #!/usr/bin/python en première
ligne du script, ou puis-je placer cette ligne de coding?
(J'ai déjà posé la question sur le groupe Emacs, j'apporterais la réponse
une fois obtenue)
Personellement je met la ligne de coding en deuxieme et ça marche impec.
Jonathan Barnoud
Bonjours chez moi j'ai le code suivant :
#!/usr/bin/python
# -*- coding: cp1252 -*-
import os, os.path, string, sys
from unicodedata import decomposition
opj=os.path.join
sa=sys.argv
def remove_accent_char(car):
decoÞcomposition(car)
if deco:
return unichr(int(deco.split()[0],16))
else:
return car
def remove_accent_str(s):
return "".join([remove_accent_char(c) for c in unicode(s, 'latin-1')])
################################################### unicodage
# renommage des "feuilles" d'abord.
for (root, dirs, files) in os.walk(sa[1], topdownúlse):
for a_file in files:
old=opj(root, a_file)
new=str(remove_accent_str(opj(root, a_file.replace(sa[2],sa[3]))))
### desunicodage
print old + "->" + new
os.rename(old,new)
###################################
# renommage en remontant des répertoires
for (root, dirs, files) in os.walk(sa[1], topdownúlse):
for a_dir in dirs:
old=opj(root, a_dir)
new=str(remove_accent_str(opj(root, a_dir.replace(sa[2],sa[3]))))
### desunicodage
print old + "->" + new
os.rename(old,new)
########################################
et j'ai cette erreur :
Traceback (most recent call last):
File "./scriptvireraccents.py", line 22, in ?
for (root, dirs, files) in os.walk(sa[1], topdownúlse):
IndexError: list index out of range
Le Wed, 05 Oct 2005 07:50:10 +0200, Jonathan Barnoud a écrit :
On Tue, 04 Oct 2005 23:01:27 +0200, Do Re Mi chel La Si Do wrote:
Il y a donc, sans doute, un problème d'encodage, à l'enregistrement du script.
Exactement. Je viens de forcer l'enregistrement du fichier en iso-8859-15 et c'est passé.
Par contre, dans la mesure ou j'ai déjà #!/usr/bin/python en première ligne du script, ou puis-je placer cette ligne de coding? (J'ai déjà posé la question sur le groupe Emacs, j'apporterais la réponse une fois obtenue)
Personellement je met la ligne de coding en deuxieme et ça marche impec.
Jonathan Barnoud
Bonjours chez moi j'ai le code suivant :
#!/usr/bin/python # -*- coding: cp1252 -*-
import os, os.path, string, sys from unicodedata import decomposition
opj=os.path.join sa=sys.argv
def remove_accent_char(car): decoÞcomposition(car) if deco: return unichr(int(deco.split()[0],16)) else: return car
def remove_accent_str(s): return "".join([remove_accent_char(c) for c in unicode(s, 'latin-1')]) ################################################### unicodage
# renommage des "feuilles" d'abord. for (root, dirs, files) in os.walk(sa[1], topdownúlse): for a_file in files: old=opj(root, a_file) new=str(remove_accent_str(opj(root, a_file.replace(sa[2],sa[3])))) ### desunicodage print old + "->" + new os.rename(old,new) ###################################
# renommage en remontant des répertoires for (root, dirs, files) in os.walk(sa[1], topdownúlse): for a_dir in dirs: old=opj(root, a_dir) new=str(remove_accent_str(opj(root, a_dir.replace(sa[2],sa[3])))) ### desunicodage print old + "->" + new os.rename(old,new) ########################################
et j'ai cette erreur :
Traceback (most recent call last): File "./scriptvireraccents.py", line 22, in ? for (root, dirs, files) in os.walk(sa[1], topdownúlse): IndexError: list index out of range