Mon problème est le suivant :
Je voudrais utiliser des expressions régulières pour faire des
modifications dans des textes en français, donc avec des accents.
J'ai fouillé dans de multiples docs et sur le site python.org mais je
n'arrive pas à mes fins.
J'ai essayé locale.setlocale avec UTF-8 et avec iso-8859-1 sans succès.
Le petit programme test suivant ne me trouve jamais "père" comme mot,
mais uniquement "p" si j'omets re.L. Avec re.L il me trouve un
caractère de plus, mais qui n'est pas reconnu comme de l'unicode. De
toute façon, ce que je veux, c'est qu'il reconnaisse le mot en
entier...
--
-------------------------------------------------------------------
xlii@xlii.supprimer.org | Ellen C. Herzfeld
http://www.quarante-deux.org/ | Dominique O. Martel
Quelques pages sur la Science-Fiction | Quarante-Deux
-------------------------------------------------------------------
On Sat, 10 Jul 2004 18:45:51 +0200, Ellen Herzfeld wrote:
f1 = re.search(r'w+', 'père', re.L)
il semble marcher comme-ci:
re.search(r'w+', 'père',re.U).group() 'pxe8re'
Ciao, Riccardo
-- -=Riccardo Galli=-
_,e. s~ `` ~@. ideralis Programs . ol `**~ http://www.sideralis.net
Ellen Herzfeld
In article , Riccardo Attilio Galli wrote:
re.search(r'w+', 'père',re.U).group() 'pxe8re'
Chez moi ça ne marche pas. Ici je récupère 'pxc3'.
Ellen
-- | Ellen C. Herzfeld http://www.quarante-deux.org/ | Dominique O. Martel Quelques pages sur la Science-Fiction | Quarante-Deux
In article <pan.2004.07.10.17.51.31.591669@cut.me.sideralis.net>,
Riccardo Attilio Galli <riccardo_cut-me@cut.me.sideralis.net> wrote:
re.search(r'w+', 'père',re.U).group()
'pxe8re'
Chez moi ça ne marche pas. Ici je récupère 'pxc3'.
Ellen
--
xlii@xlii.supprimer.org | Ellen C. Herzfeld
http://www.quarante-deux.org/ | Dominique O. Martel
Quelques pages sur la Science-Fiction | Quarante-Deux
LioneL -- Python facile : http://lionel.grolleau.free.fr/ Les ressources (liens) en français sur Python. Python et l'unicode. Comment afficher les caractères accentués dans un terminal 'DOS'.
bonjour,
Je débute en Python sur Mac OSX.
je suis sous windows98 et python 2.3
f1 = re.search(r'w+', 'père', re.L)
avec idle :
import re
re.search(r'w+', 'père', re.L).group()
'pxe8re'
dans un terminal 'DOS':
import re
re.search(r'w+', 'père', re.L).group()
'p'
LioneL
--
Python facile : http://lionel.grolleau.free.fr/
Les ressources (liens) en français sur Python.
Python et l'unicode.
Comment afficher les caractères accentués dans un terminal 'DOS'.
LioneL -- Python facile : http://lionel.grolleau.free.fr/ Les ressources (liens) en français sur Python. Python et l'unicode. Comment afficher les caractères accentués dans un terminal 'DOS'.
Gilles Lenfant
Je débute en Python sur Mac OSX.
Mon problème est le suivant : Je voudrais utiliser des expressions régulières pour faire des modifications dans des textes en français, donc avec des accents.
J'ai fouillé dans de multiples docs et sur le site python.org mais je n'arrive pas à mes fins.
J'ai essayé locale.setlocale avec UTF-8 et avec iso-8859-1 sans succès.
Le petit programme test suivant ne me trouve jamais "père" comme mot, mais uniquement "p" si j'omets re.L. Avec re.L il me trouve un caractère de plus, mais qui n'est pas reconnu comme de l'unicode. De toute façon, ce que je veux, c'est qu'il reconnaisse le mot en entier...
Tu n'as certainement pas dû utiliser la bonne locale. Voir la doc de MacOSX, et celle du package locale pour ceci.
re.search((r'w+', 'père', re.L).group() 'p'
import locale # Si Windows XP locale.setlocale(locale.LC_ALL, '') # Si FreeBSD (assez proche MacOSX) locale.seltlocale(locale.LC_ALL, 'fr_FR.ISO8859-15') re.search((r'w+', 'père', re.L).group() 'pxe8re'
Dans FreeBSD, les locales disponibles sont stockées dans /usr/share/locale. MacOSX qui a un noyau BSD doit avoir un répertoire de locales similaire.
Voilà...
-- Gilles
Je débute en Python sur Mac OSX.
Mon problème est le suivant :
Je voudrais utiliser des expressions régulières pour faire des
modifications dans des textes en français, donc avec des accents.
J'ai fouillé dans de multiples docs et sur le site python.org mais je
n'arrive pas à mes fins.
J'ai essayé locale.setlocale avec UTF-8 et avec iso-8859-1 sans succès.
Le petit programme test suivant ne me trouve jamais "père" comme mot,
mais uniquement "p" si j'omets re.L. Avec re.L il me trouve un
caractère de plus, mais qui n'est pas reconnu comme de l'unicode. De
toute façon, ce que je veux, c'est qu'il reconnaisse le mot en
entier...
Tu n'as certainement pas dû utiliser la bonne locale. Voir la doc de
MacOSX, et celle du package locale pour ceci.
re.search((r'w+', 'père', re.L).group()
'p'
import locale
# Si Windows XP
locale.setlocale(locale.LC_ALL, '')
# Si FreeBSD (assez proche MacOSX)
locale.seltlocale(locale.LC_ALL, 'fr_FR.ISO8859-15')
re.search((r'w+', 'père', re.L).group()
'pxe8re'
Dans FreeBSD, les locales disponibles sont stockées dans
/usr/share/locale. MacOSX qui a un noyau BSD doit avoir un répertoire de
locales similaire.
Mon problème est le suivant : Je voudrais utiliser des expressions régulières pour faire des modifications dans des textes en français, donc avec des accents.
J'ai fouillé dans de multiples docs et sur le site python.org mais je n'arrive pas à mes fins.
J'ai essayé locale.setlocale avec UTF-8 et avec iso-8859-1 sans succès.
Le petit programme test suivant ne me trouve jamais "père" comme mot, mais uniquement "p" si j'omets re.L. Avec re.L il me trouve un caractère de plus, mais qui n'est pas reconnu comme de l'unicode. De toute façon, ce que je veux, c'est qu'il reconnaisse le mot en entier...
Tu n'as certainement pas dû utiliser la bonne locale. Voir la doc de MacOSX, et celle du package locale pour ceci.
re.search((r'w+', 'père', re.L).group() 'p'
import locale # Si Windows XP locale.setlocale(locale.LC_ALL, '') # Si FreeBSD (assez proche MacOSX) locale.seltlocale(locale.LC_ALL, 'fr_FR.ISO8859-15') re.search((r'w+', 'père', re.L).group() 'pxe8re'
Dans FreeBSD, les locales disponibles sont stockées dans /usr/share/locale. MacOSX qui a un noyau BSD doit avoir un répertoire de locales similaire.
Voilà...
-- Gilles
Ellen Herzfeld
In article <40f2927b$0$9682$, Gilles Lenfant wrote:
Tu n'as certainement pas dû utiliser la bonne locale. Voir la doc de MacOSX, et celle du package locale pour ceci.
J'ai réussi dans le conditions suivantes, résultats d'essais multiples :
Ça ne marche ni avec fr_FR.ISO8859-15, ni avec fr_FR.ISO8859-1.
Curieusement, seul le premier byte du caractère unicode apparaît, mais si j'écris le résultat dans un fichier sur le disque, et que je l'ouvre avec un éditeur qui connaît l'unicode, j'ai bien le mot "père". Donc, en principe c'est bon.
Maintenant je m'attaque à un autre problème de locale, le tri...
A bientôt.
Ellen
-- ------------------------------------------------------------------- | Ellen C. Herzfeld http://www.quarante-deux.org/ | Dominique O. Martel Quelques pages sur la Science-Fiction | Quarante-Deux -------------------------------------------------------------------
In article <40f2927b$0$9682$636a15ce@news.free.fr>, Gilles Lenfant
<gilles.lenfant@nospam.com> wrote:
Tu n'as certainement pas dû utiliser la bonne locale. Voir la doc de
MacOSX, et celle du package locale pour ceci.
J'ai réussi dans le conditions suivantes, résultats d'essais multiples :
Ça ne marche ni avec fr_FR.ISO8859-15, ni avec fr_FR.ISO8859-1.
Curieusement, seul le premier byte du caractère unicode apparaît, mais
si j'écris le résultat dans un fichier sur le disque, et que je l'ouvre
avec un éditeur qui connaît l'unicode, j'ai bien le mot "père". Donc,
en principe c'est bon.
Maintenant je m'attaque à un autre problème de locale, le tri...
A bientôt.
Ellen
--
-------------------------------------------------------------------
xlii@xlii.supprimer.org | Ellen C. Herzfeld
http://www.quarante-deux.org/ | Dominique O. Martel
Quelques pages sur la Science-Fiction | Quarante-Deux
-------------------------------------------------------------------
Ça ne marche ni avec fr_FR.ISO8859-15, ni avec fr_FR.ISO8859-1.
Curieusement, seul le premier byte du caractère unicode apparaît, mais si j'écris le résultat dans un fichier sur le disque, et que je l'ouvre avec un éditeur qui connaît l'unicode, j'ai bien le mot "père". Donc, en principe c'est bon.
Maintenant je m'attaque à un autre problème de locale, le tri...
A bientôt.
Ellen
-- ------------------------------------------------------------------- | Ellen C. Herzfeld http://www.quarante-deux.org/ | Dominique O. Martel Quelques pages sur la Science-Fiction | Quarante-Deux -------------------------------------------------------------------
Ellen Herzfeld
In article <120720041949127537%, Ellen Herzfeld wrote:
Curieusement, seul le premier byte du caractère unicode apparaît,
Correction à mon message précédent :
En fait, une partie du problème venait du terminal qui, quand on tape un caractère accentué en mode Python interactif, le transcode de façon bizarre. D'où le 303 à la place du e accent grave, qui ne veut strictement rien dire. Il faut taper le caractère unicode et non le caractère accentué. Et il semble qu'il faille utiliser les code utf-16 et non utf-8.
Après correction, je trouve ceci:
Sans modifier la locale (par défaut à C), ça marche:
import re re.search(r'w+', u'pxe8re', re.U).group() u'pxe8re'
En modifiant la locale:
import re, locale locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8') 'fr_FR.UTF-8'
Je préfère utiliser UTF-8 plutôt que iso8859-1 ou même iso8859-15 car ces deux encodages ne contiennent pas tous les caractères dont j'ai besoin.
Pour écrire le résultat dans un fichier c'est pareil, soit avec re.U soit avec re.L, mais il faut aussi modifier l'encodage dans sitecustomize.py, sinon j'ai une erreur :
UnicodeEncodeError: 'ascii' codec can't encode character 'ue8' in position 1: ordinal not in range(128)
Ellen
-- ------------------------------------------------------------------- | Ellen C. Herzfeld http://www.quarante-deux.org/ | Dominique O. Martel Quelques pages sur la Science-Fiction | Quarante-Deux -------------------------------------------------------------------
In article <120720041949127537%xlii@xlii.supprimer.org>, Ellen Herzfeld
<xlii@xlii.supprimer.org> wrote:
Curieusement, seul le premier byte du caractère unicode apparaît,
Correction à mon message précédent :
En fait, une partie du problème venait du terminal qui, quand on tape
un caractère accentué en mode Python interactif, le transcode de façon
bizarre. D'où le 303 à la place du e accent grave, qui ne veut
strictement rien dire. Il faut taper le caractère unicode et non le
caractère accentué. Et il semble qu'il faille utiliser les code utf-16
et non utf-8.
Après correction, je trouve ceci:
Sans modifier la locale (par défaut à C), ça marche:
import re
re.search(r'w+', u'pxe8re', re.U).group()
u'pxe8re'
En modifiant la locale:
import re, locale
locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
'fr_FR.UTF-8'
Je préfère utiliser UTF-8 plutôt que iso8859-1 ou même iso8859-15 car
ces deux encodages ne contiennent pas tous les caractères dont j'ai
besoin.
Pour écrire le résultat dans un fichier c'est pareil, soit avec re.U
soit avec re.L, mais il faut aussi modifier l'encodage dans
sitecustomize.py, sinon j'ai une erreur :
UnicodeEncodeError: 'ascii' codec can't encode character 'ue8' in
position 1: ordinal not in range(128)
Ellen
--
-------------------------------------------------------------------
xlii@xlii.supprimer.org | Ellen C. Herzfeld
http://www.quarante-deux.org/ | Dominique O. Martel
Quelques pages sur la Science-Fiction | Quarante-Deux
-------------------------------------------------------------------
In article <120720041949127537%, Ellen Herzfeld wrote:
Curieusement, seul le premier byte du caractère unicode apparaît,
Correction à mon message précédent :
En fait, une partie du problème venait du terminal qui, quand on tape un caractère accentué en mode Python interactif, le transcode de façon bizarre. D'où le 303 à la place du e accent grave, qui ne veut strictement rien dire. Il faut taper le caractère unicode et non le caractère accentué. Et il semble qu'il faille utiliser les code utf-16 et non utf-8.
Après correction, je trouve ceci:
Sans modifier la locale (par défaut à C), ça marche:
import re re.search(r'w+', u'pxe8re', re.U).group() u'pxe8re'
En modifiant la locale:
import re, locale locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8') 'fr_FR.UTF-8'
Je préfère utiliser UTF-8 plutôt que iso8859-1 ou même iso8859-15 car ces deux encodages ne contiennent pas tous les caractères dont j'ai besoin.
Pour écrire le résultat dans un fichier c'est pareil, soit avec re.U soit avec re.L, mais il faut aussi modifier l'encodage dans sitecustomize.py, sinon j'ai une erreur :
UnicodeEncodeError: 'ascii' codec can't encode character 'ue8' in position 1: ordinal not in range(128)
Ellen
-- ------------------------------------------------------------------- | Ellen C. Herzfeld http://www.quarante-deux.org/ | Dominique O. Martel Quelques pages sur la Science-Fiction | Quarante-Deux -------------------------------------------------------------------