In [17]:
texte = u"""Ceci est un texte multiligne avec
des accents. Peu importe la longueur des lignes ou le nombre de ligne Python supportera
sans problèmes les caractères exotiques :
-कामसूत्र
+過労死
"""

In [18]:
def longueur(texte):
    """ Retourne un tuple qui correspond au nombre lignes puis au 
        nombre de mots et au nombre de caractères dans le texte
    """
    compteur = 0
    for line in texte.split('\n'):
        compteur += len(line.split(" "))

    return texte.count('\n'), compteur, len(texte)

In [19]:
longueur(texte)


Out[19]:
(5, 30, 179)

In [20]:
def lireFichier(chemin):
    """ Retourne un texte à partir d'un fichier
    """
    with open(chemin, 'r') as fichier:
        texte = fichier.read();
        fichier.flush()
        
    return texte

In [21]:
longueur(lireFichier('/etc/bash.bashrc'))


Out[21]:
(68, 441, 2177)

In [22]:
def longueur(texte):
    """ Retourne un tuple qui correspond au nombre lignes puis au 
        nombre de mots et au nombre de caractères dans le texte

    Nous ne comptons plus les espaces consécutifs.
    """
    compteur = 0
    for line in texte.split('\n'):
        for word in line.split(" "):
            if len(word) > 0:
                compteur = compteur + 1

    return texte.count('\n'), compteur, len(texte)

In [23]:
longueur(lireFichier('/etc/bash.bashrc'))


Out[23]:
(68, 308, 2177)

In [24]:
def recupURL(url):
    """ Retourne un texte à partir d'une URL donnée
    """
    from urllib.request import URLopener
    urlopen = URLopener()
    with urlopen.open(url) as data:
        bytes = data.read()

    return bytes.decode('utf-8')

In [25]:
longueur(recupURL('http://encolpe.degoute.free.fr'))


Out[25]:
(644, 4282, 31341)

In [26]:
def recupURL(url):
    """ Retourne un texte à partir d'une URL donnée

        Nettoyage du texte avec BeautifulSoup
    """
    from urllib.request import URLopener
    from bs4 import BeautifulSoup
    
    urlopen = URLopener()
    with urlopen.open(url) as data:
        bytes = data.read()

    soup = BeautifulSoup(bytes.decode('utf-8'))
    
    return soup.get_text()

In [27]:
longueur(recupURL('http://encolpe.degoute.free.fr'))


Out[27]:
(560, 3442, 20685)