Je me mets à Python

ce qui est rare est cher.
Trés cher ed bonjour sur ton forum :wink:

J’ai renommé le fil “Débuter en programmation” en “Je me mets au C…” sur le modèle de “Je me mets à Python…” afin de créer deux topics distincts, un pour le C, l’autre pour le Python. Cela orientera l’aide convenablement et ne fera pas fouilli. Voila ! :wink:

Bon en fait je pense que je me plante lamentablement dans l’utilisation des expressions régulières ; ce n’est donc pas un problème de python à proprement parlé.

Je cherche à isoler une séquence de caractère à la fin d’une ligne. Je pensais qu’il fallait utiliser « $ » mais visiblement cela agit sur la fin de la chaîne. Donc là y’a un truc que je maîtrise pas, car des recherche sur Google m’indique bien que le $ correspond à une « fin de ligne ».

Par exemple sur ce texte, le signe dollar me permet de trouver « albums » mais pas « originales ».

La ta chaine ça doit être tout le texte.

Toi tu veux aparament spliiter ça par newline.

Donc pour recherche ce que tu veux:

tasuperlonguechaine = "blah\nblah\nblah"

for newline in tasuperlonguechaine.split("\n"):
  expression_regulière_compilée.match('expressionrégulière$')

A+

Aaah nickel, merci beaucoup :smiley:

C’est tout bête mais faut y penser :unamused:

Bon, histoire de progresser (c’est quand même mon but), plusieurs questions maintenant :

1- à quoi ça sert de « compiler » l’expression régulière ? J’avoue ne pas comprendre.
2- quelle est la différence entre search et match ? J’ai bien lu la doc de python à ce sujet (y’a même une page nommée « matching vs searching ») mais ça reste obscure (en tout cas je retiens le : « If you want to locate a match anywhere in string, use search() instead. »)
3- J’ai bien lu le cours de G. Swinnen sur l’importation des modules ; je ne comprends pas pourquoi « from re import * » plante alors que « import re » fonctionne. Deux le deux cas on demande de tout importer, non ?

et une quatrième question plus générale :
4- est-il imaginable d’utiliser Python en CGI en lieu et place de PHP pour des scripts qui, généralement, tournent justement en PHP (livres d’or, forum, CMS, etc.) ? Y a-t-il des avantages à cela ? Des inconvénients ?

Voilà, encore merci :wink:
[size=75]
Edit : ouais en fait il était plus simple de se passer des expressions régulières :
contenu_fichier = contenu_fichier.replace(’«\n’, ‘« \n’)
contenu_fichier = contenu_fichier.replace(’\n»’, ‘\n »’)

D’ailleurs si je « sais » faire une recherche avec les expressions régulières, je ne sais toujours pas effectuer un remplacement .[/size]

Bon ben voilà le code « final » de mon humble premier « programme » :

[code]# -- coding: UTF-8 --

from os import chdir
import re

chdir("/home/julien/Desktop/")
mon_fichier = open(‘test.txt’,‘r’)
contenu_fichier = mon_fichier.read()

#~ Remplacement ou inclusion d’espaces insécables dans le texte
#~ à gauche du signe, ou en début de ligne
recherche = r’(^)?([a-zA-Z1-9])( )(!|?|:|&raquo)‘
remplace = r’\2 \4’

#~ Remplacement ou inclusion d’espaces insécables dans le texte
#~ à droite du signe, ou en fin de ligne
recherche2 = r’(«)( )([a-zA-Z1-9])($)?‘
remplace2 = r’« \3’

output = “”

for chaque_ligne in contenu_fichier.split("\n"):
traitement_ligne= re.sub(recherche, remplace, chaque_ligne)
traitement_ligne = re.sub(recherche2, remplace2, traitement_ligne)
output = output + ‘\n’ + traitement_ligne

print output[/code]

C’est tout bête mais mine de rien ça me sera utile quand même :wink:

Sinon, j’ai les réponses pour 3 des quatre questions posées plus haut. Le point 3/ (sur les modules) reste un peu obscur.

Il me semble que non justement, , from re import * importe tout le module, alors que import re importera uniquement la fonction re.

  • Signifiant tout

Cela dit je sais pas pourquoi ça plante…

from re import * ça va tenter d’importer tout re.* dans le namespace global. Or ce module n’est pas fais pour ça.

D’une manière générale, il est très très rare d’avoir besoin de faire un from toto.tata import *. C’est généralement une erreur de programmation. (Saturer le namespace global c’est trèèès mal)

Petit up de derrière les fagots.

Quelqu’un saurait me recommander un editeur pour python pas trop lourd ? Et de préférence sans besoin de machine Java.

Et si ça pouvait être dispo dans les dépôts stable, ça serait vraiment cool!

merci :wink:

emacs, vi, nano, joe, scite, gedit, kedit, etc…

D’acc, merci de ta réponse ultra rapide :stuck_out_tongue:

J’utilise actuellement le mousepad d’Xfce… Et vu que je commence à attaquer la GUI, ça devient vite plein de code, il me faudrait donc la coloration.

Emacs ne m’avait pas du tout satisfait, trop rigide, sachant en plus que j’aimerais bosser sous X.

Enfin bon, je viens d’essayer Scite, je garde :stuck_out_tongue: :stuck_out_tongue:

Niquel merci Ash. :smiley:

Je te recommande vim.

Perso j’utilise Scite : indentation automatique, coloration syntaxique, autocompletion, pliage/dépliage (je sais ne connais pas le nom technique)…

Bien, je reviens avec une question qui ne concerne pas directement python.

Partons du fait que je n’y connais rien en ce domaine (traduction : faudra m’expliquer avec des mots simples :stuck_out_tongue:)

Lorsqu’on souhaite créer un « frontend » graphique pour une application en ligne de commandes, comment gère-t-on les messages envoyés par le programme ?

Imaginons la situation très simple suivante : je fais un frontend à la commande ssh, une simple fenêtre avec un champ où j’écris l’adresse de l’ordi distant et un bouton “Se connecter”. Comment récupèré-je la demande d’entrée du password ?

Procède-t-on de manière différente en python et en php-gtk (avec lequel je suis en train de m’amuser un peu) ?

Je n’attends bien sûr qu’une réponse qui m’explique « l’esprit » (le principe) du truc, pas les commandes précises :wink:

Danke schön !

quote=“ymer” il me faudrait donc la coloration.
Emacs ne m’avait pas du tout satisfait, trop rigide, sachant en plus que j’aimerais bosser sous X.
(…)[/quote]La coloration est à activer dans emcas21 et anterieur, mais elle est standard dans emacs22. Quand à l’integration avec X, il y a xemacs (qui si je me souviens bien, est par défaut coloré depuis longtemps).

Sinon, “trop rigide”, je ne vois pas ce que tu veux dire: tout est configurable, et il y a même un langage de programation de haut niveau intègré à emacs (un lisp) qui te permet d’étendre les fonctionnalités à l’infini. Tu veux peut être dire “pas trivial”, auquel cas, je suis d’accord, les premières secondes sous emacs sont déroutantes.

Oui c’est ce que je voulais dire, plutôt déroutant, mais je n’ai aucun doute sur le fait qu’il soit configurable à souhait :wink:

Enfin depuis que je suis passé à KDE je n’ai pas encore installé SciTE, mais j’utilise Kwrite pour le moment et franchement c’est pas mal, quesque tu en penses ? Bon c’est sûr à côté d’emacs…

quote="ymer"
j’utilise Kwrite pour le moment et franchement c’est pas mal, quesque tu en penses ?
Bon c’est sûr à côté d’emacs…[/quote]Ben voilà c’est ce que j’en pense.
Je rappelle qu’il y a un tutorial >dans< emacs accessible par ctrl+h, puis t , et sinon:
tuteurs.ens.fr/unix/editeurs/emacs.html

D’acc, j’ignore si (x)emacs me serait vraiment utile vu mon niveau, mais merci beaucoup pour le lien que je garde bien au chaud, car je suis convaincu qu’il me sera utile un de ces 4 :wink:

Pour faire du python je pense qu’il y a mieux qu’emac par exemple gedit permet d’avoir une console python en permanence sous la main, et si le besoin s’en fait s’entire d’automatiser le formatage et l’utilisation de la ligne de commande.

en mode python sous emacs, outre la coloration syntaxique, il suffit de faire ctrl+cc, pour executer le script qu’on est en train d’editer:
wikipython.flibuste.net/moin.py/ … rSousLinux