Python (3)

June 19, 2006 at 8:04 am Leave a comment

Bon, vous pouvez sauter ce post si vous en avez marre de suivre ma (lente) progression dans l'apprentissage de Python.

Rappel des épisodes précédents: j'ai un fichier xml de notices tirées du catalogue, que je parcoure pour en tirer les infos du champs 610. J'en étais à obtenir, en mémoire, une liste (au sens pythonesque du terme liste) de mots clés classés alphabétiquement.
Ce que j'ai ajouté cette fois-ci:
===============================================
Ecrire ma liste qui est en mémoire dans un fichier xml en unicode

f = open("610.xml", "w") # creates a new xml file to write in; previous content discarded

f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<subjects>\n") # writes 1st 2 lines

i = 0 # inits counter
while i < len(sortedhints): # while counter < to total number of items in list…
  f.write("<subject>" + sortedhints[i].encode('utf-8') + "</subject>\n") # writes content to file
  i = i + 1 #increments counter

f.write("</subjects>") # writes closing line of file

f.close() # closes file

Il y a sans doute des façons beaucoup plus efficaces de programmer ça, mais ça marche.

Le résultat:

<?xml version="1.0" encoding="utf-8"?>
<subjects>
<subject>contentieux</subject>
<subject>droit civil</subject>
<subject>droit des sociétés</subject>
<subject>enfant</subject>
<subject>entreprise</subject>
<subject>entreprise en difficulté</subject>
<subject>france</subject>
<subject>gestion de patrimoine</subject>
<subject>gestion financière</subject>
<subject>institution judiciaire</subject>
<subject>juridiction civile</subject>
<subject>justice</subject>
<subject>management</subject>
<subject>ministère public</subject>
<subject>procédure civile</subject>
<subject>éducation</subject>
</subjects>

Vous remarquerez que Python place les caractères accentués à la fin de l'alphabet. Pour ce qu'on veut faire, je ne sais pas si ça a de l'importance. Quelqu'un qui taperait é comme première lettre d'un mot serait bien placé, dans les suggestions, à "éducation". A voir.

================================================
Permettre de définir, quand on lance le programme, le nom du fichier, ainsi que le champ qu'on va récupérer.
Au début du programme, j'ajoute les deux lignes suivantes:

source = raw_input("enter the name of your input file, e.g. my_records.xml: ")
fieldNumber = raw_input("enter the name of the varfield you want to extract, e.g. 610: ")

Et après dans le fichier je remplace partout notices.xml par source et 610 par fieldNumber. On est ainsi libre de donner le nom qu'on veut au fichier xml source, et on peut faire tourner le programme pour le 610 ou n'importe quel autre champ: ces deux infos vous sont demandées par un prompt dès que vous lancez le programme.

Maintenant il faut que je gère mieux le contenu des différents champs. Mon programme prend tous les sous-champs pour l'instant, et si je le fais tourner pour le champs 606, par exemple, ça donne un contenu moyen, avec des <subject>ppn029051428</subject> ou des <subject>rameau</subject>, càd y compris les sous-champs 2 et 3. Bref, à raffiner.

Advertisements

Entry filed under: Uncategorized.

auto-dérision geek Castore (et TEF)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Feeds


%d bloggers like this: