Version imprimable du sujet
Forums MacBidouille _ Programmation _ le process du "c cedille"
Écrit par : mat 26 May 2004, 17:06
le process du "c cedille"
j'aimerai développer un petit moteur de recherche dont le principe est le suivant:
trier une liste de mot avec une contrainte genre tt les mots avec un "c cédille"
dans une base de donnée internet
j'ai des notions de lingo (director)
j'ai aussi une sacrée liste de mot classé (+ de 30 000)
quelqu'un a une idée?
evidement si en plus on peux changer la contrainte
allé au boulot les gars et que ça saute!!!!
merci
mat
Écrit par : mat 27 May 2004, 08:08
c'est si compliqué?
Écrit par : mat 29 May 2004, 19:05
a priori oui
Écrit par : f_cam 29 May 2004, 19:28
Je ne comprends pas tres bien ta question. Tu veux sortir toutes les rangées d'une base dont une colonne donnée contient un (ou plusieurs caracteres données)?
A ce moment la tu fais qqch genre select * from mabase where macolonne like "%b%"
Écrit par : Einstein 29 May 2004, 19:32
ou bien, si ton texte est formaté par htmlentities:
select * from tabase where tacolonne like "Ç" or "ç"
Écrit par : mat 30 May 2004, 11:05
oula! compliqué!
en fait je veux pouvoir extraire de n'importe quel texte les mots comprenant un "ç"
et l'ideale serait de rentre une URL, le moteur scan la page et me sors une liste de tt les mots avec "ç"
voilou
Écrit par : f_cam 30 May 2004, 12:17
OK, j'avais pas bien compris la question.
Le plus simple, c'est avec un truc comme perl, une petite expression reguliere et le tour devrait etre joué.
Écrit par : mat 30 May 2004, 12:30
ok, j'ai cru comprendre que perl est un moteur de recherche c'est ça?
mais si par exemple je veux scanner cette page http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots dont je ne suis pas l'auteur?
Écrit par : f_cam 30 May 2004, 13:22
Pas exactement. perl est un langage de programmation tres orienté manipulation de chaines/expressions regulieres.
dans ton cas precis c'est encore plus simple, un truc du type
CODE
curl "http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots" | grep "ç"
suffira. Attention par contre aux histoires d'encodage, moi en reglant sur ISO-Latin 1, ca marche (mais quand je tape la commande a executer il met \347 au lieu de ç).
Écrit par : mat 30 May 2004, 15:04
et dans quel appli tout ça s'execute?
Écrit par : f_cam 30 May 2004, 15:24
Dans le terminal.
Écrit par : mat 5 Aug 2004, 09:58
oups, j'avais pas vu la réponse
il me donne ça:
CODE
Last login: Thu Aug 5 08:56:56 on console
Welcome to Darwin!
[mat:~] matthieu% curl "http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots" | grep "\303\247"
% Total % Received % Xferd Average Speed Time Curr.
Dload Upload Total Current Left Speed
100 950k 100 950k 0 0 117k 0 0:00:08 0:00:08 0:00:00 126k
[mat:~] matthieu%
heu? j'en fais quoi?
Écrit par : mat 5 Aug 2004, 10:00
sinon, ya pas moyen de le faire en apple script?
merci encore les gars
Écrit par : f_cam 5 Aug 2004, 11:31
Là où ce que je t'ai donné foire c'est que ton ordi fait la recherche en utf 8, alors que le fichier est en ISO-Latin 1
Désolé, l'applescript n'est pas mon domaine.
Écrit par : mat 5 Aug 2004, 11:34
et comment je fais pour convertir?
merci
Écrit par : schlum 5 Aug 2004, 12:11
QUOTE(f_cam @ 30 May 2004, 14:22)
Pas exactement. perl est un langage de programmation tres orienté manipulation de chaines/expressions regulieres.
dans ton cas precis c'est encore plus simple, un truc du type
CODE
curl "http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots" | grep "ç"
suffira. Attention par contre aux histoires d'encodage, moi en reglant sur ISO-Latin 1, ca marche (mais quand je tape la commande a executer il met \347 au lieu de ç).
[right][snapback]720171[/snapback][/right]
CODE
curl -O "http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots"
cat mots | grep "ç"
Je dirais
Écrit par : mat 5 Aug 2004, 12:14
marche pas!
CODE
[mat:~] matthieu% http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots" && cat mots | grep "\303\247"
tcsh: Unmatched ".
[mat:~] matthieu%
en plus il me rensforme le ç en 247
Écrit par : f_cam 5 Aug 2004, 12:15
Tu peux mettre ton terminal sur le même encodage (avec la palette Window Settings).
Tu as aussi convertir le texte avec iconv, dans le cas présent:
CODE
iconv -f LATIN1 -t UTF-8 mots | grep "\303\247"
si tu as le fichier dans le repertoire courant avec le nom "mots"
ou
CODE
curl "http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots" | iconv -f LATIN1 -t UTF-8 | grep "\303\247"
si tu l'as pas. attention, le \303\247 n'est pas à taper, il faut taper un c çedille comme on le fait normalement et le terminal transcrira cette séquence (ce qui n'est pas la même chose que de taper la séquence à la main).
Écrit par : ploute 5 Aug 2004, 12:16
Euh non schlum, par défaut curl affiche sur stdout, donc le grep est bien passé... je sens mieux l'histoire d'encodage texte
Ptêt retenter en réglant la fenêtre Ter;inal sur ISO-Latin-9 (ou Latin-1 c'est pareil en ce qui concerne la cédille)
Écrit par : mat 5 Aug 2004, 12:19
QUOTE(f_cam @ 5 Aug 2004, 13:15)
Tu peux mettre ton terminal sur le même encodage (avec la palette Window Settings).
Tu as aussi convertir le texte avec iconv, dans le cas présent:
CODE
iconv -f LATIN1 -t UTF-8 mots | grep "\303\247"
si tu as le fichier dans le repertoire courant avec le nom "mots"
ou
CODE
curl "http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots" | iconv -f LATIN1 -t UTF-8 | grep "\303\247"
si tu l'as pas. attention, le \303\247 n'est pas à taper, il faut taper un c çedille comme on le fait normalement et le terminal transcrira cette séquence (ce qui n'est pas la même chose que de taper la séquence à la main).
[right][snapback]800286[/snapback][/right]
ça donne
CODE
Last login: Thu Aug 5 13:14:49 on ttyp1
Welcome to Darwin!
[mat:~] matthieu% curl "http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots" | iconv -f LATIN1 -t UTF-8 | grep"\303\247"
tcsh: grep\303\247: Command not found.
% Total % Received % Xferd Average Speed Time Curr.
Dload Upload Total Current Left Speed
1 950k 1 17008 0 0 30979 0 0:00:31 0:00:00 0:00:30 71641
curl: (23) Failed writing body
[mat:~] matthieu%
je comprend plus grand chose la
désolé, c'est la 1ere fois que j'ouvre le terminal
Écrit par : schlum 5 Aug 2004, 12:21
QUOTE(mat @ 5 Aug 2004, 12:34)
et comment je fais pour convertir?
merci
[right][snapback]800241[/snapback][/right]
CODE
iconv -f L1 -t UTF-8 mots > mots2
Écrit par : mat 5 Aug 2004, 12:21
ayé ça marche!!!!!!!!!
merci!!!!!!!!!!!
Écrit par : schlum 5 Aug 2004, 12:22
QUOTE(ploute @ 5 Aug 2004, 13:16)
Euh non schlum, par défaut curl affiche sur stdout, donc le grep est bien passé... je sens mieux l'histoire d'encodage texte
Ptêt retenter en réglant la fenêtre Ter;inal sur ISO-Latin-9 (ou Latin-1 c'est pareil en ce qui concerne la cédille)
[right][snapback]800289[/snapback][/right]
Pas tous les curl ... La version de fink que j'ai ne le fait pas
Écrit par : mat 5 Aug 2004, 12:23
alors recap:
ouvrir le terminal
mettre en iso latin 1 ds l"afficher les infos"
curl "http://adresse a scanner" | iconv -f LATIN1 -t UTF-8 | grep "lettre a chercher"
valider
merci les gars!
Écrit par : schlum 5 Aug 2004, 12:25
QUOTE(mat @ 5 Aug 2004, 13:23)
alors recap:
ouvrir le terminal
mettre en iso latin 1 ds l"afficher les infos"
curl "http://adresse a scanner" | iconv -f LATIN1 -t UTF-8 | grep "lettre a chercher"
valider
merci les gars!
[right][snapback]800302[/snapback][/right]
curl affiche le fichier ?
[EDIT] Bon, au temps pour moi, j'ai un curl bizarre
Bon, en tout cas, t'es pas obligé de retélécharger à chaque fois
Une fois téléchargé (avec curl), tu peux remplacer la permière partie par "cat mots", ce sera instantané ...
Écrit par : mat 5 Aug 2004, 12:28
???
euh
en fait le resultat c'est une liste de mots ds le terminal
je comprend pas ce qu'est "curl"
Écrit par : schlum 5 Aug 2004, 12:34
QUOTE(mat @ 5 Aug 2004, 13:28)
???
euh
en fait le resultat c'est une liste de mots ds le terminal
je comprend pas ce qu'est "curl"
[right][snapback]800309[/snapback][/right]
C'est un utilitaire de téléchargement ... On a pas le même f_cam, ploute et moi ; pour ça que je comprenais pas pourquoi ça marchait
En fait, le mieux c'est de le télécharger une bonne fois pour toute sur le disque :
CODE
curl "http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots" > mots
Puis tu n'as plus qu'à faire des :
CODE
cat mots | grep "expression_régulière"
Dans une expression régulière, . remplace un caractère, * remplace un nombre quelconque de fois répété le lemme précédent, + la même chose mais avec au moins une fois, ^ remplace le début d'une ligne, $ la fin d'une ligne, [] représentent un caractère parmi ceux à l'intérieur, [^] remprésentent un caractère parmi ceux qui ne sont pas à l'intérieur ...
Écrit par : mat 5 Aug 2004, 12:37
oula!
merci je vais cartonner avec ça
encore merci tous!
Écrit par : f_cam 5 Aug 2004, 12:39
QUOTE(schlum @ 5 Aug 2004, 13:34)
C'est un utilitaire de téléchargement ... On a pas le même f_cam, ploute et moi ; pour ça que je comprenais pas pourquoi ça marchait
[right][snapback]800314[/snapback][/right]
C'est pas ton curl qui est bizarre, c'est toi qui lui files un -O
Écrit par : mat 5 Aug 2004, 12:46
QUOTE(schlum @ 5 Aug 2004, 13:34)
QUOTE(mat @ 5 Aug 2004, 13:28)
???
euh
en fait le resultat c'est une liste de mots ds le terminal
je comprend pas ce qu'est "curl"
[right][snapback]800309[/snapback][/right]
C'est un utilitaire de téléchargement ... On a pas le même f_cam, ploute et moi ; pour ça que je comprenais pas pourquoi ça marchait
En fait, le mieux c'est de le télécharger une bonne fois pour toute sur le disque :
CODE
curl "http://www.mines.inpl-nancy.fr/~tombre/Archilog/Td101103/mots" > mots
Puis tu n'as plus qu'à faire des :
CODE
cat mots | grep "expression_régulière"
Dans une expression régulière, . remplace un caractère, * remplace un nombre quelconque de fois répété le lemme précédent, + la même chose mais avec au moins une fois, ^ remplace le début d'une ligne, $ la fin d'une ligne, [] représentent un caractère parmi ceux à l'intérieur, [^] remprésentent un caractère parmi ceux qui ne sont pas à l'intérieur ...
[right][snapback]800314[/snapback][/right]
concretement si je cherche un mot de 5 lettre avec un "e" a la 3eme place, je tape cat mots | grep "..e.."?
Écrit par : f_cam 5 Aug 2004, 12:56
Presque. "^..e..$"
^ et $ indiquent le debut et la fin d'une ligne, si tu ne mets pas ca, tu sortiras des mots comme "presque", puisque "presq" correspond à "..e.."
Tu peux aussi passer l'option -w à grep qui en gros dis que si il y a un match, ça doit être sur un mot entier. (à ce moment la, plus besoin des ^ et $ je pense).
edit: ça m'a pas l'air de marcher le -w. On dirait que les caractères accentués l'embrouille un peu.
Écrit par : schlum 5 Aug 2004, 13:30
QUOTE(mat @ 5 Aug 2004, 13:46)
concretement si je cherche un mot de 5 lettre avec un "e" a la 3eme place, je tape cat mots | grep "..e.."?
[right][snapback]800335[/snapback][/right]
Attention, là tu ne tiens pas compte du début et de la fin de la ligne
CODE
cat mots | grep "^..e..$"
PS : tu peux aussi utiliser l'option -v qui au lieu de sélectionner des mots les exclus
Exemple :
CODE
cat mots | grep "ç" | grep -v "on$"
--> mots contenant "ç" mais ne finissant pas par "on"
[edit] arf, pas vu la 2ème page
Écrit par : schlum 5 Aug 2004, 13:34
QUOTE(f_cam @ 5 Aug 2004, 13:39)
QUOTE(schlum @ 5 Aug 2004, 13:34)
C'est un utilitaire de téléchargement ... On a pas le même f_cam, ploute et moi ; pour ça que je comprenais pas pourquoi ça marchait
[right][snapback]800314[/snapback][/right]
C'est pas ton curl qui est bizarre, c'est toi qui lui files un -O
[right][snapback]800319[/snapback][/right]
Oups, vi, j'avais complètement oublié que sans cette option ça partait sur le stdout
Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)