Toujours connecté :

> Recherche avancée...

Menus

Connexion Inscription

Recherche

Pages: 1 2 [3]   Bas de page
  Répondre  |  Envoyer ce fil  |  Imprimer  
Auteur Fil de discussion: Code Snippet (exemples)  (Lu 4909 fois)
0 Membres et 1 Invité sur ce fil de discussion.

Hors ligne Voir le profil WWW Homme

# Frost - Made in Québec

Développeur Python & Skinning Engine - Fait partie du Décor - Messages: 1512

Fondateur

Re : Code Snippet (exemples)

« Répondre #30 le: 21 Juillet 2009 16:17:48 »
Citer en réponse
 arrows_right Remplacer un mot en masse dans un fichier

Code
(Python):
import os
import string
 
 
def replaces( source, search_for, replace_with ):
   # set temporary files
   back = os.path.splitext( source )[ 0 ] + ".bak"
   temp = os.path.splitext( source )[ 0 ] + ".tmp"
   # remove temp file if exists
   try: os.remove( temp )
   except os.error: pass
   # open source and temp file
   fi = open( source )
   fo = open( temp, "w" )
   # read lines of source file
   for line in fi.readlines():
       # temp file, write line with replaced str
       fo.write( string.replace( line, search_for, replace_with ) )
   # end replace close source and temp file
   fi.close()
   fo.close()
   # remove backup file if exists
   try: os.remove( back )
   except os.error: pass
   # now rename original file into backup
   os.rename( source, back )
   # and rename temp into new source
   os.rename( temp, source )
 
 
source_file = "test_replaces.xml"
search_for = "Salut"
replace_with = "Bonjour"
 
replaces( source_file, search_for, replace_with )
 
Journalisée

Vous ne comprenez rien au jargon de Frost! Voici l'outil ultime pour vous: Dictionnaire de la langue québécoise

Le joual ou cheval québécois
Le joual, c'est le québécois populaire. C'est à l'origine le parler de ceux qui ne sont pas allés à l'école,
une prononciation déformée de la langue des instruits. Ce terme de joual est une prononciation relâchée, faiblement articulée,
de cheval (prononcez le v comme le w de Waterloo). Il est aussi bien fortement teinté d'anglicismes :

Neveurmagne ! est une déformation de never mind : ça ne fait rien !
Un homme en beau joual vert est un homme très en colère.



Hors ligne Voir le profil WWW Homme

# Frost - Made in Québec

Développeur Python & Skinning Engine - Fait partie du Décor - Messages: 1512

Fondateur

Re : Code Snippet (exemples)

« Répondre #31 le: 14 Août 2009 02:52:23 »
Citer en réponse
 arrows_rightDécouper une liste en plusieurs partie égal

La fonction:
Code
(Python):
def splitlist( iterable, start=0, step=30, end=0 ):
   """Return a list containing an slice of iterable.
   start (!) defaults to 0.; step is split index, (!) defaults to 30.; end (!) defaults to 0.
   For example, splitlist(range(4)) returns [[0, 1, 2, 3]].
   """

   try:
       splited = []
       if end <= 0:
           end = len( iterable )
 
       for index in xrange( step, end, step ):
           splited.append( iterable[ start:index ] )
           start = index
       splited.append( iterable[ start:end ] )
 
       return splited
   except:
       from traceback import print_exc
       print_exc()
 
   return [ iterable ]
 

Un exemple:
Code
(Python):
import string
maliste = list( string.printable )
print maliste
print
 
# splitlist( iterable, start=0, step=30, end=0 ) )
splited = splitlist( maliste )
 
print "Nombre total d'items", len( maliste )
print "Nombre de listes", len( splited )
 
for count, liste in enumerate( splited ):
   print "liste #", count+1
   print len( liste ), liste
   print
"""
>>>
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', ':',
';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~', ' ', '\t', '\n', '\r', '\x0b', '\x0c']
 
Nombre total d'items 100
Nombre de listes 4
liste # 1
30 ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't']
 
liste # 2
30 ['u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X']
 
liste # 3
30 ['Y', 'Z', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`']
 
liste # 4
10 ['{', '|', '}', '~', ' ', '\t', '\n', '\r', '\x0b', '\x0c']
 
>>>
"""


Après 1 heure de recherche sur le web avec aucun résultat valable. J'ai créé cette fonction made in Frost  smiley si vous avez plus simple merci de mettre votre Snippet
« Dernière édition: 14 Août 2009 03:09:46 par Frost » Journalisée

Vous ne comprenez rien au jargon de Frost! Voici l'outil ultime pour vous: Dictionnaire de la langue québécoise

Le joual ou cheval québécois
Le joual, c'est le québécois populaire. C'est à l'origine le parler de ceux qui ne sont pas allés à l'école,
une prononciation déformée de la langue des instruits. Ce terme de joual est une prononciation relâchée, faiblement articulée,
de cheval (prononcez le v comme le w de Waterloo). Il est aussi bien fortement teinté d'anglicismes :

Neveurmagne ! est une déformation de never mind : ça ne fait rien !
Un homme en beau joual vert est un homme très en colère.



En ligne Voir le profil Homme

# Temhil - Développé Couché

Developpeur Python petit scarabée - Fait partie du Décor - Messages: 2420

Fondateur

Re : Code Snippet (exemples)

« Répondre #32 le: 14 Octobre 2009 23:18:37 »
Citer en réponse
 arrows_right Parser un XML

Afin de parser un XML dans XBMC vous aurez le choix entre plusieurs module tels que:

  • ElementTree: Tres rapide a parser mais aussi tres sensible aux erreurs dans un XML
  • BeautifulSoup: Moins rapide qu'ET mais supporte des XML 'moins standards'
  • minidom: un grand classique, plus d'info sur le site officiel ICI, voici un snippet LA
  • lxml: a ses fans aussi, plus d'infos ICI
  • Et certainement d'autres ...

Je n'ai pour ma part eu l'occasion que de comparer ElementTree et BeautifulSoup
Voici donc deux exemple de code parsant le meme XML, l'un avec ElementTree, l'autre avec Beautifulsoup

 arrows_right Exemple avec BeautifulSoup
Code
(Python):
from BeautifulSoup import BeautifulStoneSoup
 
soup =  BeautifulStoneSoup((open(os.path.join(CACHEDIR, XMLFile), 'r')).read())
cat_scrapers = soup.find("scrapers")
 
if cat_scrapers != None:
for item in cat_scrapers.findAll("entry"):
if hasattr(item.title,'string'):
if item.title.string != None:
title = item.title.string.encode("cp1252")
if hasattr(item.version,'string'):
if item.version.string != None:
version = item.version.string.encode("utf-8")
if hasattr(item.lang,'string'):
if item.lang.string != None:
language = item.lang.string.encode("utf-8")
if hasattr(item.date,'string'):
if item.date.string != None:
date = item.date.string.encode("cp1252")
if hasattr(item.previewvideourl,'string'):
if item.previewvideourl.string != None:
previewVideoURL = item.previewvideourl.string.encode("utf-8")

 arrows_right Exemple avec ElementTree
Code
(Python):
import elementtree.ElementTree as ET
 
elems     = ET.parse( open( os.path.join( CACHEDIR, XMLFile ), "r" ) ).getroot()
cat_scrapers = elems.find( "scrapers" ).findall( "entry" )
 
for item in cat_scrapers:
title             = item.findtext( "title" )
version           = item.findtext( "version" )
language          = item.findtext( "lang" )
date              = item.findtext( "date" )
added             = item.findtext( "added" )
previewVideoURL   = item.findtext( "previewVideoURL" )

Dans les deux bien sur cas vous devrez couvrir en plus les exceptions en utilisant des blocs try/except
Journalisée

Hors ligne Voir le profil WWW Homme

# CinPoU - Drunken Master

Fait partie du Décor - Messages: 1542

Developpeur

Re : Code Snippet (exemples)

« Répondre #33 le: 15 Octobre 2009 00:04:02 »
Citer en réponse
 arrows_right Avec minidom, ça devrait ressembler à ça :

Code
(Python):
import xml.dom.minidom
 
xmlPath = os.path.join( CACHEDIR, XMLFile )
xmlTree = xml.dom.minidom.parse(xmlPath)
 
 
for item in xmlTree.getElementsByTagName("entry") :
   title = item.getElementsByTagName('title')[0].firstChild.data
   version = item.getElementsByTagName('version')[0].firstChild.data
   langage = item.getElementsByTagName('langage')[0].firstChild.data
   date = item.getElementsByTagName('date')[0].firstChild.data
   added = item.getElementsByTagName('added')[0].firstChild.data

L'avantage du minidom est la possibilité de passer d'un niveau enfants/parents très facilement.

 arrows_right Pour lire les attributs d'un noeud :
ce qui correspond à la valeur de title dans <noeud title="item1"> :

Code
(Python):
noeud.attributes['title'].value


 arrows_right Créer un fichier xml "fictif":

Code
(Python):
xmldoc = xml.dom.getDOMImplementation()
self.xmlTree = xmldoc.createDocument('', 'master', '')

Correspond à un fichier parser contenant seulement la racine nommée ici master.
Il est ainsi possible de le manipuler comme un xml parser, et de le sauvegarder dans un fichier.

 arrows_right Ecriture du xml dans un fichier :

Code
(Python):
outputfile = open(xmlPath, 'wb')
outputfile.write(xmlTree.toxml(encoding="UTF-8"))
outputfile.close()

 arrows_right Exemple d'ajout de donnée dans un xml, avec parse et sauvegarde du xml :

Code
(Python):
  def xml_add_account(self, title, type, login, pwd):
 
       #read the calendars list xml
       account_xml = os.path.join( sys.modules[ "__main__" ].SPECIAL_SCRIPT_DATA, "account.xml" )
       xml_list_account = xml.dom.minidom.parse(account_xml)
       accounts = xml_list_account.childNodes[0]
 
       # Create a main <account> element
       xml_account = xml_list_account.createElement("account")
       xml_accountBal = accounts.appendChild(xml_account)
 
 
       # Create the account <title> element
       xml_title = xml_list_account.createElement("title")
       xml_titleBal = xml_accountBal.appendChild(xml_title)
 
       # Give the <title> element some text
       xml_titletext = xml_list_account.createTextNode(title)
       xml_titleBal.appendChild(xml_titletext)
 
 
       # Create the account <type> element
       xml_type = xml_list_account.createElement("type")
       xml_typeBal = xml_accountBal.appendChild(xml_type)
 
       # Give the <type> element some text
       xml_typetext = xml_list_account.createTextNode(type)
       xml_typeBal.appendChild(xml_typetext)
 
 
       # Create the account <login> element
       xml_login = xml_list_account.createElement("login")
       xml_loginBal = xml_accountBal.appendChild(xml_login)
 
       # Give the <login> element some text
       xml_logintext = xml_list_account.createTextNode(login)
       xml_loginBal.appendChild(xml_logintext)
 
 
       # Create the account <password> element
       xml_pwd = xml_list_account.createElement("password")
       xml_pwdBal = xml_accountBal.appendChild(xml_pwd)
 
       # Give the <password> element some text
       xml_pwdtext = xml_list_account.createTextNode(pwd)
       xml_pwdBal.appendChild(xml_pwdtext)  
 
 
       # Print our newly created XML
       print xml_list_account.toxml(encoding="UTF-8")
 
       outputfile = open(account_xml, 'wb')
       outputfile.write(xml_list_account.toxml(encoding="UTF-8"))
       outputfile.close()

Après avoir été beaucoup aidé, j'espère que je pourrais servir à mon tour
« Dernière édition: 15 Octobre 2009 00:19:25 par CinPoU » Journalisée
Pages: 1 2 [3]   Haut de page
  Répondre  |  Envoyer ce fil  |  Imprimer  
 
Aller à:  

+ Réponse Rapide