[python]Question de saut de ligne

Question de saut de ligne [python] - Python - Programmation

Marsh Posté le 31-07-2003 à 11:18:18    

Salut voilà je sais comment gérer les saut de ligne en java, ou autr langage. mais voilà en python quand on fait un print, le saut de ligne est automatique...  
Le problème c'est que je ne veux pas ce put.... de saut de ligne, est ce que vous savez comment faire ???
J'ai cherché bien sûr, j'ai vu comment virer les dèrnière lettre, les espaces .. mais pas comment virer le saut de ligne ou écrire à la suite du dernier print ..  
 
HELP ? :sweat:  
 
@ ++ :hello:

Reply

Marsh Posté le 31-07-2003 à 11:18:18   

Reply

Marsh Posté le 31-07-2003 à 11:23:33    

print "hello",

Reply

Marsh Posté le 31-07-2003 à 11:31:27    

çà ne marche pas cette solution chez moi ...  
je t'envoi le code, au cas où tu veuille bien y jeter un oeil :
 
 

Code :
  1. #!/usr/bin/python2
  2. import cgi
  3. import MySQLdb
  4. import os
  5. from param import *
  6. print "Content-type: text/html; charset=iso-8859-1"
  7. print ""
  8. # body
  9. print '''
  10. <html>
  11. <head>
  12. <title>Gestion des Projets et des taches</title>
  13. </head>
  14. <body>
  15.       '''
  16. print "<!-- HOST : %s DBNAME: %s DBUSER:%s DBPASSWD:%s -->" % (HOST,DBNAME,DBUSER,DBPASSWD)
  17. conn=MySQLdb.connect(host=HOST,db=DBNAME,user=DBUSER,passwd=DBPASSWD)
  18. curs=conn.cursor()
  19. #fonction qui récupère sous forme de code HTML l'arbre des projets.
  20. def getprojet(space,parent):
  21.     space=space
  22.     sql='select * from projet where parent="'+parent+'"'
  23.     count=curs.execute(sql)#renvoie le nombre de lignes trouvées lors de la requête SQL.
  24.     count=int(count)
  25.     #curs.fetchall retourne une liste des tuples réultat de la requete SQL. On veut pour chaque tuple récuperer ses fils.
  26.     c=0
  27.     for i in curs.fetchall():
  28.         c=c+1
  29.         idProjet=str(i[0])
  30.         print '<tr>'   
  31.    
  32.         print '<td>'
  33.         print space
  34.         if c!=count:
  35.             print '<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/t.gif" width="9" height="21" border="0">',
  36.         else:
  37.             print '<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/L.gif" width="9" height="21" border="0">',
  38.            
  39.         if hasson(idProjet) or hastask(idProjet):
  40.             print '<img src="../../icons/m.gif" width="9" height="21" border="0">',
  41.         else:
  42.             print '<img src="../../icons/h.gif" width="9" height="21" border="0">',
  43.        
  44.         print i[1]
  45.      
  46.         print '</td>'
  47.         print '</tr>'
  48.      
  49.         if hastask(idProjet):
  50.             sql='select * from tache where idProjet="'+idProjet+'"'
  51.             ccount=curs.execute(sql)
  52.             ccount=int(ccount)
  53.             cc=0
  54.             for k in curs.fetchall():
  55.                 cc=cc+1
  56.                 print '<tr><td>'
  57.                 print space+'<img src="../../icons/space.jpg" width="14" height="21" border="0">',
  58.                 if cc!=ccount or hasson(idProjet):
  59.                     print '<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/t.gif" width="9" height="21" border="0">',
  60.                 else:
  61.                     print '<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/L.gif" width="9" height="21" border="0">',
  62.        
  63.                
  64.              
  65.                 print '<b>'+k[1]+'</b>'
  66.                 print '</td></tr>'
  67.         if c!=count:
  68.             espace=space+'&nbsp;<img src="../../icons/i.gif" width="12" height="21" border="0">'
  69.         else:
  70.             espace=space+'<img src="../../icons/space.jpg" width="12" height="21" border="0">'
  71.         getprojet(espace,str(i[0]))
  72.                  
  73. #Regarde si le projet courant a des fils
  74. #
  75. #param = courant : Le numéro de projet (idProjet) courant
  76. #return boolean : True si il a au moins 1 fils
  77. def hasson(courant):
  78.     sql='select * from projet where parent="'+courant+'"'
  79.     curs.execute(sql)
  80.     res=curs.fetchone()
  81.     if str(res)!='None':
  82.         return "1"
  83. def hastask(courant):
  84.     sql='select * from tache where idProjet="'+courant+'"'
  85.     curs.execute(sql)
  86.     res=curs.fetchone()
  87.     if str(res)!='None':
  88.         return "1"   
  89.    
  90.    
  91. print '<table cellpadding="0" cellspacing="0" BORDER="0">'
  92. print '<tr>'
  93. print '<td><img src="../../icons/space.jpg" width="10" height="21" border="0">'
  94. print '<img src="../../icons/m.gif" width="9" height="21" border="0">'
  95. print 'ROOT</td>'
  96. print '</td>'
  97. print '</tr>'
  98. espace='<img src="../../icons/space.jpg" width="10" height="21" border="0">' 
  99. getprojet(espace,"1" )
  100. print '</table>'
  101. print '''
  102. </body>
  103. </html>
  104. '''


 
Moi je voudrais que toutes mes balise <img> contenues dans les <td> soit collés dans la source html .. :)


Message édité par protoinou le 31-07-2003 à 11:32:14
Reply

Marsh Posté le 31-07-2003 à 11:37:59    

:heink:  et tu fais quoi des , + et autre "" %

Reply

Marsh Posté le 31-07-2003 à 16:07:33    

Comment çà ?
 
?

Reply

Marsh Posté le 31-07-2003 à 16:12:45    

j'ai rien compris à ton truc. montre le problème

Reply

Marsh Posté le 31-07-2003 à 16:21:53    

Désolé TAZ je dois mal m'expliquer si tu veux j'ai mon script CGI que tu peux voir plus haut il génere du code HTML ....
 
A un moment il me sort un truc de  ce style :
 
<img src="../../icons/space.jpg" width="10" height="21" border="0">
<img src="../../icons/space.jpg" width="1" height="21" border="0">
 
Mais moi je veux que c'est 2 lignes ne fasse qu'une:
<img src="../../icons/space.jpg" width="10" height="21" border="0"><img src="../../icons/space.jpg" width="1" height="21" border="0">
 
Tu comprends???  
ALors le problème c'est que c'est 2 chaines sont écrites par 2 print différents, et que je ne peux pas les concatené, ou du moins je ne crois pas ...
Car quand je fais le second print, je ne sais pas quel print a été fait avant ..  
 
Est ce que tu comprends maintenant ou pas?
 
En fait je voudrais que quand je fasse un print, la chaine soit automatiquement mise à la suite de la dèrnière sortie (printé) sans aller à la ligne .
 :pt1cable:  :pt1cable:

Reply

Marsh Posté le 31-07-2003 à 16:23:32    

et pourquoi tu concatenes pas ?

Reply

Marsh Posté le 31-07-2003 à 16:28:22    

Bah parceque tout simplement je ne connais pas la chaine qui précède, mais remarque je suis tellementnul en python que c'est peut etre possible, la doc python que j'ai lu n'allait pas dans les gros détail la dessus ...
 
Tu peux faire un print +"triutrieuitureituer" , çà se fait çà ?

Reply

Marsh Posté le 31-07-2003 à 16:29:47    

ecoute print, fonctionne
 
mais si tu veux pas, ben tu prépare tes chaines et affiche la somme...

Reply

Marsh Posté le 31-07-2003 à 16:29:47   

Reply

Marsh Posté le 31-07-2003 à 16:31:57    

Comment çà print fonctionne ?
 
Et préparer les chaines, si je te suis bien çà sous entend que je garde en mémoire à chaque fois la dèrnière chaine printé ?

Reply

Marsh Posté le 31-07-2003 à 16:33:58    

[benoit@athlon tmp]$ cat print.py
print "hello",
print "world"
[benoit@athlon tmp]$ python print.py
hello world

Reply

Marsh Posté le 31-07-2003 à 17:02:35    

Bah ouai ton truc il marche je ne comprends pas, ... avec un petit test.py çà marche bien, mais quand je lance le script que j'ai copier coller, çà ne le fait pas,...
 
Bon mais là vu l'exemple frappant que tu m'a donné, c'est forcé que c moi qui ai fait une erreur, enfin merci pour le print "",
 
C'est bon à savoiR...  
 
Chao ...

Reply

Marsh Posté le 31-07-2003 à 17:10:00    

ouai bah non je ne pige pas ... çà marche pas , je vais passer en mode débuggage intensif là , çà va chier pour le print, merci pour tout benoit :)

Reply

Marsh Posté le 31-07-2003 à 17:21:04    

pourquoi tu fais pas des + ou alors des
 
print '<img src=%s /><img src=% />' % ( 'dawa.png', 'truc.jpeg')

Reply

Marsh Posté le 31-07-2003 à 17:24:29    

Euh bah là je ne vois par contre, je ne vois pas en quoi çà résoudrait mon problème ... :)
Le pb ce n'est pas de savoir quelles images mettre,  
 
...
...
...
 
Ah remarque si tu as peut etre raison çà peut peut etre m'aider , bon j'étudie çà  

Reply

Marsh Posté le 31-07-2003 à 17:25:33    

de toutes façons, je comprends pas pourquoi tu prépares pas ta chaine tranquillement, et une fois que t'as tout dedans, pan, un print

Reply

Marsh Posté le 31-07-2003 à 17:35:52    

Regarde mon script ... tu le vois? je l'ai copié plus haut ...
Bah maintenant regarde un des morceau qu'il me rend lors de son execution:
 
<tr>
<td>
<img src="../../icons/space.jpg" width="10" height="21" border="0">
<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/t.gif" width="9" height="21" border="0"> <img src="../../icons/m.gif" width="9" height="21" border="0"> Projet1
</td>
</tr>
 
et bien moi je voudrais plutot:
 
<tr>
<td>
<img src="../../icons/space.jpg" width="10" height="21" border="0"><img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/t.gif" width="9" height="21" border="0"> <img src="../../icons/m.gif" width="9" height="21" border="0"> Projet1
</td>
</tr>
 
tu vois la nuance..  
 
Bah quand tu regarde mon script python avec les if, tu vois bien que je ne peux pas savoir qu'elle tag img, je vais mettre...  
Mais bon je ne suis pas très fort en python ...
 
Tu ferais comment toi*
 
 
Fais moi un exemple très con si tu as le temps du style ...
 
 
Print "prout"
 
if a:
    print "quand"
else:
    print "sans"
 
 
if c:
    print "pluie il y a"
else:
    print "les champs"
 
Bon moi en résultat je voudrais que çà phase une phrase sur une ligne et pas  
prout
quand/sans
pluie il y a/leschamps

Reply

Marsh Posté le 31-07-2003 à 17:38:31    

et ben pourquoi tu concatènes pas les chaines? et en fin de compte, un print

Reply

Marsh Posté le 31-07-2003 à 17:40:13    

Mais je pige pas ce que tu veux dire, tu veux dire, faire un print "<chaine de caractères>",   (en oubliant pas la virgule)
C'est çà que tu veux dire?
Parceque si c'est çà , et bien, j'ai éssayé, quand je lance un test tout con comme tu as fait çà marche, mais là çà ne marche pas ... :)???
Je ne sais pas pourkoi ...  

Reply

Marsh Posté le 31-07-2003 à 17:41:32    

:pt1cable:  
 
[code]
a="truc"
 
if machin:
   a+="dawa"
else:
   a+="tamere"
 
print a

Reply

Marsh Posté le 31-07-2003 à 17:44:20    

MMh ouai c'est un peu plus compliqué que de rajouter les virgules,  
Mais çà reste simple, j'y avait pas penser ...  
Merci  
 

Reply

Marsh Posté le 31-07-2003 à 17:50:22    

Putain Taz je suis trop con.. je suis désolé d'avoir pris de ton temps j'ai trouvé mon erreur, en fait le coup des "", marchait très bien ,j'en avait rajouté partout , sauf à un moment ou je fais un print space... sauf que space c'était un <img ...> récupéré des paramètre de fonction, donc à chaque fois çà merdait, mais je n'avais pas vu ...
 
En tout cas merci bcp pour l'astuce du "",  
 
EUH /!\ : C'est dans quel doc que tu as vu çà , parceque la mieene a beau etre grosse y'a pas çà /...  
En tout cas merci beaucoup à toi d'avoir concacré ton temps pur m'aider  :hello:  :hello:

Reply

Marsh Posté le 31-07-2003 à 17:53:43    

je sais pas, en tout cas c'est dans le précis&concis d'oreillyn dans Nutshell (en anglais) donc ça doit se trouver partout. print est un mot réservé donc, ça doit être bien documenté normalement

Reply

Marsh Posté le 31-07-2003 à 18:10:21    

Ouai bah en fait là j'ai choppé une doc d'un pote en francais en plus et c'est dedans ... je change donc de doc. ..
 
D'ailleurs là j'ai lu tout ce qu'il y'avait à savoir sur lstrip() rstrip() mais fait un vi de çà et lance le:
a="true"
print '<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/t.gif" width="9" height="21" border="0">',
if a=="true":
        print '<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/t.gif" width="9" height="21" border="0">',
else:
        print '<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/t.gif" width="9" height="21" border="0">',
 
 
tu va voir il y a un espace entre les <img> et çà c'est la mort pour moin, j'ai beau mettre des strip(), j'arrive pas à les enlever... est ce qu'il faut que je passe par un mode de liste ? OU je sais quoi ?  
 
Est ce que je peux faire une truc du style [:1] qque part ?
Qu'est ce que tu en penses ,

Reply

Marsh Posté le 31-07-2003 à 18:18:00    

pas d'espace chez moi
 
<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/t.gif" width="9" height="21" border="0">
 
 
au fait, les booléens existe en Python, True et False

Reply

Marsh Posté le 31-07-2003 à 21:36:29    

Nop y'a pas d'espace toi tu as regardé les 2 premiers:
 
mais c'est normal car pour les deux premiers <img> on a:
print '<img src="../../icons/space.jpg" width="1" height="21" border="0"><img src="../../icons/t.gif" width="9" height="21" border="0">',  
 
 
Voilà ... mais regarde le résultat après y'a des espaces non ?

Reply

Marsh Posté le 01-08-2003 à 10:20:51    

Taz tu n'es plus là ?
 :ange:

Reply

Marsh Posté le 01-08-2003 à 10:24:06    

pas d'espaces. me dit pas que tu batailles encore?

Reply

Marsh Posté le 01-08-2003 à 10:46:56    

Bah si mais toi aussi tu as forcément les éspaces ... regarde au milieu, tu as deux groupe de 2 tag <img>, et bein il y 'a un espace entre ces groupes ... regarde mieux STP et dis moi que toi aussi tu as ce put... d'éspace . :)

Reply

Marsh Posté le 01-08-2003 à 10:52:08    

ProToinou a écrit :

Bah si mais toi aussi tu as forcément les éspaces ... regarde au milieu, tu as deux groupe de 2 tag <img>, et bein il y 'a un espace entre ces groupes ... regarde mieux STP et dis moi que toi aussi tu as ce put... d'éspace . :)
 


 
On va mettre ça sous le coup d'un manque de café pour tous les 2. Il y a 2 endroits dans le code on l'ont fait des print pour les "<img>" et le premier intègre la virgule anti retour à la ligne mais pas le deuxième. ;)
 
PS : de plus, la virgule après le print enlève le retour à la ligne mais le remplace par un espace aussi.


Message édité par Kristoph le 01-08-2003 à 10:58:30
Reply

Marsh Posté le 01-08-2003 à 11:22:34    

ouai kristoph et donc comment, est ce que tu fais pour enlever cet épsace ?
 ;)

Reply

Marsh Posté le 01-08-2003 à 11:24:57    

mais POURQUOI (avec au choix: +, +=, string.join, %) tu veux pas faire par concaténation et ne faire qu'un seul print

Reply

Marsh Posté le 01-08-2003 à 11:29:24    

ProToinou a écrit :

ouai kristoph et donc comment, est ce que tu fais pour enlever cet épsace ?
 ;)  


 
Fais comme Taz te dis de faire, c'est de la méthode la plus simple même si ce n'est pas la plus efficace en terme de perfs.
 
Si tu te sens l'ame d'un optimisator de l'extrème, tu peux aussi essayer de remplacer tous tes print par des sys.stdout.write(chaine) mais ça risque de rendre le code pas très lisible.

Reply

Marsh Posté le 01-08-2003 à 14:15:12    

Bah si sans doute que je peux faire çà , je vais voir, c'est juste que le code sera moins facilement maintenable après, mais bon je vais le commenter un minimum, çà devrait le faire
Je vais essayer de tout concaténer comme çà  

Reply

Marsh Posté le 01-08-2003 à 14:37:14    

Kristoph a écrit :


 
Fais comme Taz te dis de faire, c'est de la méthode la plus simple même si ce n'est pas la plus efficace en terme de perfs.
 
Si tu te sens l'ame d'un optimisator de l'extrème, tu peux aussi essayer de remplacer tous tes print par des sys.stdout.write(chaine) mais ça risque de rendre le code pas très lisible.


 
Je retire ce que j'ai dis pour les questions de perfs :

Citation :

16 Jun 2003
 
    Enough new things that I would like to make a release 1.1 soon. Top points: Psyco will now inline calls to short functions, almost cancelling the cost of creating small helpers like 'def f(x): return (x+1) & MASK'. And I have rewritten the string concatenation implementation, as the previous one was unexpectedly inefficient: now using 's=s+t' repeatedly to build a large string is at least as efficient as filling a cStringIO object (and more memory-conservative than using a large list of small strings and calling '"".join()' at the end).


 
Avec l'optimisateur psyco pour python, faire plein de "s=s+t" pour créer une chaine ne fait pratiquement pas perdre de performances alors c'est donc la méthode conseillée pour sa lisibilité.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed