Obtenir une liste des liens d'une page HTML en python

Avec python il est possible d'obtenir une liste des liens provenant d'une page HTML en passant par le module [beautifulsoup4](https://pypi.python.org/pypi/beautifulsoup4/4.3.2). Dans cet exemple, on récupère tous les liens sur la page wikipedia sur Alan Turing: # -*- coding: utf-8 -*- from bs4 import BeautifulSoup import urllib2 import re html_page = urllib2.urlopen("http://fr.wikipedia.org/wiki/Alan_Turing") soup = BeautifulSoup(html_page) LinksList = [] for link in soup.findAll(

Vérifier si une adresse url existe avec python

Avec python il est possible de vérifier si une adresse url existe ou pas grâce aux modules [httplib](https://docs.python.org/2/library/httplib.html) et [urlparse](https://docs.python.org/2/library/urlparse.html). Voici un exemple de mise en pratique ([source](http://stackoverflow.com/questions/6471275/python-script-to-see-if-a-web-page-exists-without-downloading-the-whole-page)): # -*- coding: utf-8 -*- import httplib from urlparse import urlparse def checkUrl(url): p = urlparse(url

Boucle "for" sur 2 ou plusieurs "queryset" dans le template

Considérons, tout d'abord, le cas simple, où on veut dans le template créer un tableau en utilisant une boucle "for" à partir d'un "queryset", on procède alors généralement comme ceci, dans views.py : def MyView(request): MyQuerySet = Article.objects.order_by('-modified') return render_to_response("MyApp/exemple.html", {'MyQuerySet':MyQuerySet}, context_instance=RequestContext(request)) et dans le template (intitulé ici exemple.html) <table class="table table-striped

Requête avec un filtre utilisant une liste (Django)

Avec django il est possible de mettre en place une requête avec un filtre utilisant une liste, voir exemple ([source](http://stackoverflow.com/questions/4916851/django-get-a-queryset-from-array-of-ids-in-specific-order)) id_list = [1, 5, 7] objects = Foo.objects.filter(id__in=id_list) ### Recherches associées Liens | Site ------------- | ------------- [The pk lookup shortcut](https://docs.djangoproject.com/en/dev/topics/db/queries/#the-pk-lookup-shortcut) | Django Doc [in](https://d

Comment créer une liste de nombres en python ?

Exemples de comment créer une liste de nombres en python avec [list comprehensions](http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Comprehensions.html) et "built-in functions" [list()](https://docs.python.org/2/library/functions.html#list): [TOC] ### Créer une liste d'entiers Pour créer une liste d'entiers entre 0 et b, il existe la fonction range(n): >>> l = [i for i in range(10)] >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> l = list(range(10)) >>>

Changer la taille de la police dans la légende (matplotlib)

Pour changer la taille de la police dans une légende sous matplotlib il suffit d'ajouter le mot clé "prop" (i.e. plt.legend(prop={'size':12}) dans la fonction pyplot: [legend](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.legend) comme dans cette exemple [image:448 size:100 caption:Changer la taille de la police dans la légende sous matplotlib (Exemple avec plt.legend())] [image:449 size:100 caption:Changer la taille de la police dans la légende sous matplotlib (Exemple avec pl

Boucle simultanée sur 2 ou plusieurs listes en python

Avec python il est possible de faire une boucle simultanée sur 2 ou plusieurs listes en même temps avec la fonction [zip](https://docs.python.org/2/library/functions.html#zip). Exemple basique d'utilisation: >>> a = [1,7,2] >>> b = [8,9,4] >>> for i,j in zip(a,b): ... print i,j ... 1 8 7 9 2 4 >>> c = [121,143,876] >>> for i,j,k in zip(a,b,c): ... print i,j,k ... 1 8 121 7 9 143 2 4 876 ### Recherches associées Liens | Sit

Comment avoir la colorbar de la même taille que la figure avec matplotlib ?

Exemple de comment ajuster la taille de la colorbar à la figure avec matplotlib : [TOC] ### Colorbar de meme taille que la figure avec matplotlib Un problème récurrent avec matplotlib est de vouloir adapter la taille de la colorbar au graphique comme dans l'exemple ci-dessous: [image:446 size:50 caption:Adapter la taille de la colorbar au graphique (matplotlib) (1/2)] import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable import numpy as np

Limiter le nombre de requêtes avec Django

Considérons le cas où on veut, par exemple, avec django seulement afficher les 10 derniers membres inscrits sur notre site. Pour cela, il est intéressant de pourvoir limiter le nombre de requêtes. Dans ce cas, il suffit d'ajouter à la fin de la requête [:10] comme dans cet [exemple](http://stackoverflow.com/questions/6574003/django-limiting-query-results) (dans le fichier views.py): User.objects.all().order_by('-id')[:10] ### Recherches associées Liens | Site ------------- | ---

Message d'erreur ou informatif dans le HTML avec Django

Avec Django il est possible de mettre automatiquement des [messages](https://docs.djangoproject.com/en/dev/ref/contrib/messages/)d'erreurs/informatifs dans le template html. Considérons un exemple simple: on souhaite mettre un message dans le html si quelque chose ne s'est pas bien passé en voulant afficher la page. Pour cela, dans le fichier views.py il suffit d'ajouter, au minimum, les quelques lignes suivantes: [image:444 size:100 caption:Figure 1: Message d'erreur ou informatif dans le HT

Trouver le plus grand élément dans une liste (python)

Avec python pour trouver la valeur maximum dans une liste de nombre il existe la fonction "build-in": max. Un exemple simple d'utilisation: >>> a = [3,8,3,5,9,1,4] >>> max(a) 9 Pour trouver l'indice (ou les indices sir la valeur maximum est présente plusieurs fois dans la liste) vous pouvez utiliser l'approche suivante: >>> a = [3,8,3,5,9,1,4] >>> m = max(a) >>> [i for i, j in enumerate(a) if j == m] [4] Note: dans le cas où la liste comprend des nombres et des

Générer un nombre aléatoire dans un intervalle donné (python)

Pour générer un nombre aléatoire avec python il existe le module [random](https://docs.python.org/2/library/random.html). Par exemple, si on veut générer un nombre entier aléatoire dans un intervalle donné [2,9] il faut utiliser la fonction randint comme ceci: >>> from random import randint >>> randint(2,9) 6 >>> for i in range(10): ... print randint(2,9) ... 2 9 2 9 9 7 4 5 3 6 Pour un nombre réel, il faut utiliser la fon

Concaténer deux matrices avec c_ (numpy)

L'instance de classe [c_](http://docs.scipy.org/doc/numpy/reference/generated/numpy.c_.html) est assez populaire sous numpy et permet rapidement de concaténer deux matrices sur le dernier axe. On utilise le plus souvent cette instance pour concaténer des matrices de dimension (n*1): >>> import numpy as np >>> a = np.array([5,2,1,7]) >>> b = np.array([9,0,8,6]) >>> c = np.c_[a,b] >>> c array([[5, 9], [2, 0], [1, 8], [7, 6]]) Un autre exe

Extraire le code RGB à partir d'une colormap de Matplotlib

Présentation du problème: On dispose par exemple d'un graphique réalisé avec matplotlib (dans notre exemple on a utilisé le code [suivant](http://scikit-learn.org/stable/auto_examples/svm/plot_separating_hyperplane.html) qui est un nuage de points avec deux classes de couleurs différentes) et on souhaite utiliser les mêmes couleurs pour construire un autre graphique comme un histogramme. Avec python et matplotlib il est relativement simple de récupérer le code RGB pour une colormap donnée ([voir

Ajuster les bords d'une figure Matplotlib

### Cas général [image:185 size:100 caption:Image No Tight Layout] [image:186 size:100 caption:Image With Tight Layout] #!/usr/bin/env python from numpy import * import numpy as np import matplotlib.pyplot as plt x = np.arange(10) h = [0,1,2,3,5,6,4,2,1,0] fig = plt.figure() plt.title('Title') plt.xlim(0, 10) plt.ylim(0, 8) plt.xlabel('x label') plt.ylabel('y label') bar1 = plt.bar(x,h,width=1.0,bottom=0,color='Green',alpha=0.65,label='Legend') plt.

Afficher une matrice avec des virgules comme séparateur entre les éléments (Numpy)

Quand on veut imprimer à l'écran une matrice avec 'print' on obtient une représentation de celle-ci relativement simple de type [[ 0 1 2 ]] avec les éléments séparés par des espaces. Si on veut afficher une matrice avec des virgules comme séparateur entre les éléments, il faut passer par [repr](https://docs.python.org/2/library/repr.html) ou [pprint](https://docs.python.org/2/library/pprint.html) comme dans cet exemple: import numpy as np import pprint m = np.arange(15).reshape((5, 3))

Estimation par noyau 2d (scipy + matplotlib)

Exemple d'estimation par noyau 2d utilisant scipy et matplotlib: [image:441 size:100 caption:Estimation par noyau 2d (scipy + matplotlib)] from scipy import stats, mgrid, c_, reshape, random, rot90 import numpy as np import matplotlib.pyplot as plt import matplotlib.cm as cm values = np.array([[ 0.04810362, 0.02606397], [ 0.21804558, 0.19724609], [ 0.02868612, 0.00172462], [ 0.40554094, 0.35376897], [ 0.43878371, 0.19474262], [ 0.37266064, 0.37235034],

Comment sélectionner aléatoirement les lignes d'un tableau de données sous python avec numpy ?

Exemple de comment sélectionner aléatoirement les lignes d'un tableau de données sous python avec numpy [TOC] ### Tableau de données Soit le tableau de données suivant: >>> import numpy as np >>> data = np.arange(80).reshape((8, 10)) >>> data array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34, 35, 36, 37, 38, 39], [40, 41, 42, 43, 44, 45, 46, 47

Utiliser Matplotlib avec Django

### Figure Matplotlib avec Django **urls.py** url(r'^_Matplotlib/Bar/$', 'visualization.views.GraphsViewBar'), **views.py** [image:430 size:100 caption:Matplotlib avec Django (Exemple simple)] # -*- coding: utf-8 -*- from django.shortcuts import render_to_response from django.template import RequestContext from django.http import HttpResponseRedirect from wiki.models import Article, ArticleRevision, URLPath from django.http import HttpResponse from matplotlib.backends.back

Comment obtenir l'adresse IP d'un visiteur avec django ?

Exemple de comment obtenir l'adresse ip d'un visiteur sous django: [TOC] ### Obtenir l'adresse ip du visteur def visitor_ip_address(request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[0] else: ip = request.META.get('REMOTE_ADDR') return ip ### Verifier si l'adresse ip est valide On peut ensuite vérifier si l'adresse ip est valide

Remplacer / Supprimer un mot dans une phrase en python

Pour remplacer / supprimer un mot dans une phrase en python il existe la méthode [replace](https://docs.python.org/2/library/string.html). Exemple: >>> s = 'Bonjour, comment ca va ?' >>> s = s.replace('Bonjour','Salut') >>> s 'Salut, comment ca va ?' >>> s = s.replace('Salut','') >>> s ', comment ca va ?' >>> s = 'Salut, comment ca va, Salut' >>> s = s.replace('Salut','') >>> s ', comment ca va, ' >>> ### Recherches associées Liens | Site ----

Comment barrer du texte en HTML

Pour barrer du texte en HTML il existe la balise: [del](http://www.w3schools.com/tags/tag_del.asp). Exemple: [image:436 size:100 caption:Comment barrer du texte en HTML] <!DOCTYPE html> <html> <body> Mon sport prefere est le <del>football</del>, tennis ! </body> </html> ### Recherches associées Liens | Site ------------- | ------------- [Balise del](http://www.w3schools.com/tags/tag_del.asp) | w3schools [del](https://developer.mozilla.org/fr/docs/Web/HTML/Element/del) | devel

Obtenir une liste des sous-répertoires en python

Avec python il est possible d'obtenir une liste des sous-répertoires composant un répertoire donné à l'aide de la méthode [walk](https://docs.python.org/2/library/os.html). A titre d'exemple considérons la configuration suivante: FolderRoot: -> F1: -> F11 -> F12 -> F2 -> F3 Si on se place au niveau du répertoire "FolderRoot" et qu'on lance python puis la commande [x[0] for x in os.walk('FolderRoot')] on obtient bien la liste de tous les ré

Formater un float dans un template sous Django

Avec Django il est possible d'envoyer des nombres de type float dans le template en passant par le fichier **views.py**. Cepdendant quand on affiche ces derniers dans le template le format n'est pas forcement celui souhaité. Par exemple, par défaut, on obtient des nombres avec une virgule et non par un point. Si on veut des nombres de type float avec un point pour séparer les chiffres et pas une virgule, il faut formater le nombre comme dabs cet exemple: Dans le fichier **views.py:** Nomb

Formulaire sans "model" associé avec Django

Avec Django, il est évidemment possible de mettre en place un formulaire sans être obligé de développer un "model" associé à celui-ci. En effet, il arrive souvent que l'on veuille mettre en place un formulaire sans vouloir stocker dans la base de données les informations envoyées par celui-ci. Ce cas de figure est bien expliqué dans la documentation de Django ([voir](https://docs.djangoproject.com/en/dev/topics/forms/)). Exemple simple de mise en pratique: **models.py**: [image:432 size:100 c