Affichage des articles dont le libellé est python. Afficher tous les articles
Affichage des articles dont le libellé est python. Afficher tous les articles

vendredi 13 novembre 2020

python, distance de levenshtein

La distance de Levenshtein est une distance, au sens mathématique du terme, donnant une mesure de la différence entre deux chaînes de caractères. Elle est égale au nombre minimal de caractères qu'il faut supprimer, insérer ou remplacer pour passer d'une chaîne à l'autre.

Exemple:



Source: https://fr.wikipedia.org/wiki/Distance_de_Levenshtein

jeudi 5 mars 2015

python, connaitre le dernier jour d'un mois...

Il est possible de déterminer facilement le dernier jour d'un mois.

Pour cela on peut utiliser le module calendar (bibliothèque standard) qui est assez méconnu.



Le résultat indique pour Février 2015:
- que le mois comporte 28 jours
- que le premier jour du mois est un dimanche (0=Lundi, 1=Mardi, ... 6=Dimanche)

mardi 1 juillet 2014

Python, retirer les accents d'une chaine



python accent accents retirer supprimer unicode unicodedata

mercredi 27 février 2013

Git, fichier .netrc

Il y a plusieurs mois, j'ai découvert l'existence du fichier .netrc et l'utilisation que l'on peut en faire.

Dans le cadre de l'un de mes projets, j'y ai stocké les informations de connexion vers le wiki de l'entreprise à des fins de scripting.

En python, la lecture se fait simplement en utilisant le module netrc.

Aujourd'hui, je viens de découvrir que git peut l'utiliser afin d'éviter d'avoir à retaper son login et mot de passe à chaque push...



Ce fichier me plaît bien : centralisation et simplicité :)

jeudi 18 octobre 2012

python, print sur stderr



print, sys, stderr

lundi 15 octobre 2012

python, lire et écrire des fichiers xls

Si l'on a des fichiers Excel que l'on souhaite lire ou écrire, on peut utiliser les paquets xlrd (reader) et xlwt (writer).

Voici un petit exemple de ce que l'on peut faire :



La page suivante propose des exemples clairs et rapides pour bien commencer :
http://www.dev-explorer.com/articles/excel-spreadsheets-and-python

mercredi 10 octobre 2012

python, faire en sorte que stdin/stdout lisent et écrivent en binaire

J'ai écrit un petit programme qui s'inspire de cut en python.

La lecture et l'écriture pouvant se faire sur l'entrée/sortie standard (sources ucut), j'avais des problèmes de "'ascii' codec can't decode byte"...

Pour y remédier, j'ai "transformé" les flux standard (mode texte) en flux binaires de la manière suivante :



python, binary, os, fileno

lundi 23 juillet 2012

python, obtenir la liste des fichiers .java

Pour récupérer la liste des .java dans une arborescence et sa sous-arborescence, on peut utiliser le code suivant :
import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('/path/to/the/directory'):
  for filename in fnmatch.filter(filenames, '*.java'):
      matches.append(os.path.join(root, filename))

vendredi 20 juillet 2012

python, ouvrir un fichier en utf8

Pour ouvrir un fichier en utilisant un encodage particulier, il est possible de passer par le module codecs...
with codecs.open('the_file.csv', 'r', 'utf8') as f:
    l = f.readline()
    ...

lundi 16 juillet 2012

python, unicode...

>>> unicodedata.name(u"é")
'LATIN SMALL LETTER E WITH ACUTE'
>>> print u"e accent aigu : \N{LATIN SMALL LETTER E WITH ACUTE}"
e accent aigu : é

python, bash et encoding...

En python, lorsque la sortie n'est pas de type tty, l'encoding est "ascii" ce qui provoque des erreurs sur les caractères accentués. La solution est d'exporter la variable PYTHONIOENCODING qui définit l'encoding à utiliser.
$ python a.py 
é
$ python a.py | cat
Traceback (most recent call last):
  File "a.py", line 3, in 
    print u"\xe9";
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: 
ordinal not in range(128)
$ export PYTHONIOENCODING=utf-8 
$ python a.py | cat
é
$
Une autre solution est de changer l'encoding de stdout...
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import codecs
import locale

sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout)

print u"é"

jeudi 24 mai 2012

python, marre des accents en java : remplacez les par de l'unicode !


$ cat tounicode.py
#!/usr/bin/python

import re
import sys

s = sys.argv[1].decode('utf8')

print re.sub('\\\\x', '\\u00', re.sub('\'$', '', re.sub('^u\'', '', repr(s))))

$ python tounicode.py "salut beauté"
salut beaut\u00e9

vendredi 4 mai 2012

python, conversion d'un fichier d'iso8859 en utf8

#!/bin/python

import sys

if len(sys.argv) != 3:
    print 'usage: python iso8859toutf8.py [infile] [outfile]'
    sys.exit(0)

with open(sys.argv[2], 'w') as fout:
    with open(sys.argv[1], 'r') as fin:
        data = fin.read().decode('iso8859')
        while data:
            fout.write(data.encode('utf8'))
            data = fin.read().decode('iso8859')

mardi 24 avril 2012

python, envoi d'un mail avec un fichier en attachement


import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email import Encoders

msg = MIMEText('le texte du message')
msg['From']='crontab-do-not-reply@example.com'
msg['To']='destinataire1@example.com,destinataire2@example.com'
msg['Subject']='le titre du message'

texte = MIMEText(u'Le \xe9but du message', 'plain', 'utf-8')
msg.attach(texte)

content = MIMEBase('text', 'csv')
content.set_payload(csvbuffer)
Encoders.encode_base64(content)
content.add_header('Content-Disposition', 'attachment', filename='fichier.csv')
msg.attach(content)

smtp = smtplib.SMTP(mailhost)
smtp.sendmail('crontab-do-not-reply@example.com', ['destinataire1@example.com', 
                'destinataire2@example.com'], msg.as_string())
smtp.quit()

python, envoi d'un mail texte


import smtplib
from email.MIMEText import MIMEText

msg = MIMEText('le texte du message')
msg['From']='crontab-do-not-reply@example.com'
msg['To']='destinataire1@example.com,destinataire2@example.com'
msg['Subject']='le titre du message'

smtp = smtplib.SMTP(mailhost)
smtp.sendmail('crontab-do-not-reply@example.com', ['destinataire1@example.com', 
                'destinataire2@example.com'], msg.as_string())
smtp.quit()

mardi 3 avril 2012

Python, parseur XML

BeautifulSoup est une petite bibliothèque fort sympathique que j'ai utilisée pour parser et publier du contenu dans des pages Wiki... Le tout en python :)

Elle fait sa "soupe" pour parser et faire économiser des heures aux pauvres développeurs que nous sommes !
Site de BeautifulSoup