Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

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 wink.gif

Écrit par : mat 27 May 2004, 08:08

c'est si compliqué? sad.gif

Écrit par : mat 29 May 2004, 19:05

a priori oui… sad.gif unsure.gif

É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 wink.gif

É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 tongue.gif

É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 ph34r.gif

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  ph34r.gif

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 tongue.gif

É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 ? unsure.gif [EDIT] Bon, au temps pour moi, j'ai un curl bizarre tongue.gif

Bon, en tout cas, t'es pas obligé de retélécharger à chaque fois wink.gif 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 wink.gif
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  wink.gif
[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 wink.gif
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 wink.gif
CODE
cat mots | grep "^..e..$"


PS : tu peux aussi utiliser l'option -v qui au lieu de sélectionner des mots les exclus wink.gif

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  wink.gif
[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 ph34r.gif

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)