17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

356<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

Une extension possible serait d’enrichir l’expression régulière pour ajouter des conditions<br />

sur le texte situé avant et après le lien.<br />

Exercice 4 : trier des phrases suivant le nombre de mots<br />

Description<br />

L’objectif de l’exercice 4 est de trier des phrases en fonction du nombre de mots qu’elles<br />

contiennent, sans compter la ponctuation, ni les mots de taille inférieure ou égale à<br />

2 lettres. Le tri obtenu doit rester constant, c’est-à-dire que deux phrases contenant le<br />

même nombre de mots doivent toujours être ordonnées de la même manière.<br />

Points abordés<br />

Tri et le module itertools.<br />

Solution<br />

Tri en fonction du poids des phrases<br />

#!/usr/bin/python<br />

# -*- coding: utf8 -*from<br />

string import punctuation<br />

from string import maketrans<br />

from itertools import imap<br />

NO_PUNCT = maketrans(punctuation, ' ' * len(punctuation))<br />

def clean_line(line):<br />

"""Nettoie la phrase, et renvoie son 'Poids'"""<br />

line = line.translate(NO_PUNCT)<br />

cleaned_line = []<br />

for word in line.split():<br />

word = word.strip()<br />

if len(word) < 2:<br />

continue<br />

cleaned_line.append(word)<br />

numwords = len(cleaned_line)<br />

return numwords, ' '.join(cleaned_line)<br />

def cmp_lines(line1, line2):<br />

"""Compare les poids des phrases.<br />

En cas d'égalité, l'ordre alphanumérique.<br />

"""

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!