IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

please Help: utilisation de utf-16 sous python?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    TALN:inférence grammaticale
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations professionnelles :
    Activité : TALN:inférence grammaticale

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut please Help: utilisation de utf-16 sous python?
    Bonjour,

    actuelement j'esseye d'implémter un prog qui lit le contenu d'une page html et copie le contenu sur un fichier TXT.

    j'ai réussi a l'implémenté avec codage et encodage UTF-8,

    le résultat (le contenu des fichier text) seront analysé par un autre logiciel .

    selement voilà ce logiciel n'accepte que les fichier codé en utf-16.

    j'ai utilisé le même programme que j'ai développé pour utf-8 en remplaçant .encode('utf8') et .decode ('utf8') par utf-16.(voir ci dessous)

    mais lors de l'exécution il m'a généré des erreurs et n'a pas pu s'exécuter,

    #C:/python27
    # -*- coding: utf-16 -*-

    def lire_ecrire_fichier_txt(url, name_file):

    print "décut de l'éxécution"
    htmlSource = urllib.urlopen(url).read().decode('utf-16')

    text=htmlSource.lower().split('<p')[1:]
    path = createFile(name_file)
    f = open(path, "a")
    title=htmlSource.lower().split('<title>')[1:]
    for i in title:

    if (i[:i.find('</title>')]!=-1):
    txt= i[:i.find('</title>')]
    text=enlever_balise(txt)
    text=netoyer_text(text)
    if text!= '':
    f.write((text+'\n').encode('utf-16'))
    for chunk in htmlSource.lower().split('<p')[1:]:
    if(chunk.find('</p>')!=-1):

    if chunk[0] != '<':
    text= chunk[:chunk.find('</p>')]+"\n"
    txt= chunk[:chunk.find('</p>')]+"\n"
    text=enlever_balise(txt)
    text=netoyer_text(text)


    if text!= '':
    f.write((text+'\n').encode('utf-16'))

    f.close()
    nb_token(path)

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    Quelles erreurs ? Il serait bien de montrer le traceback.

    Une remarque: ton script ne doit pas être obligatoirement en utf-16 pour ce que tu veux faire, l'encodage de ton script et celui de tes données n'ont rien à voir ensemble.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    # -*- coding: utf-8 -*-
     
    TEXT = u"Noël au balcon, Pâques au tison"
     
    with open('proverbe.txt', 'w') as objf:
        objf.write(TEXT.encode('utf-16'))
     
    with open('proverbe.txt', 'r') as objf:
        txt = objf.read().decode('utf-16')
     
    print txt
    vincent@tiemoko:~/Bureau$ python utf16.py
    Noël au balcon, Pâques au tison
    D'autre part, le parsing de ton html m'a l'air encombré de choses inutiles, tes erreurs viennent peut-être de là.

  3. #3
    Membre averti
    TALN:inférence grammaticale
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations professionnelles :
    Activité : TALN:inférence grammaticale

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Merci pour ta réponse mais lorsque j'ai tenté de lire à partir de la page HTML en utf-16 avec la commande
    htmlSource = urllib.urlopen(url).read().decode('utf-16')

    un message d'erreur est apparu




    Traceback (most recent call last):
    File "<pyshell#2>", line 1, in <module>
    lancer()
    File "C:\Users\ESSMA\Desktop\getlien_khabar.py", line 328, in lancer
    base = get_Html("http://www.elkhabar.com/ar/")
    File "C:\Users\ESSMA\Desktop\getlien_khabar.py", line 216, in get_Html
    htmlSource = urllib.urlopen(url).read().decode('utf-16')
    File "C:\Python27\lib\encodings\utf_16.py", line 16, in decode
    return codecs.utf_16_decode(input, errors, True)
    UnicodeDecodeError: 'utf16' codec can't decode bytes in position 262-263: illegal UTF-16 surrogate

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Merci pour ta réponse mais lorsque j'ai tenté de lire à partir de la page HTML en utf-16 avec la commande
    htmlSource = urllib.urlopen(url).read().decode('utf-16')
    Pourquoi essayer de décoder en "utf-16" une page HTML dans laquelle on trouve "<meta content="text/html; charset=utf-8" http-equiv="Content-Type">"?
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    TALN:inférence grammaticale
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations professionnelles :
    Activité : TALN:inférence grammaticale

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    pour répondre a ta qst :

    je veux construire une base de données de texte arabe

    j'ai extrait le contenu d'une page HTML avec decode(utf-8)
    et j'ai copié le text sur un fichier TXT avec un encode (utf-8)

    j'ai implémenté ceci avec succès

    mais la phase d'après, le logiciel avec le quel je veux utilisé ces fichier doivent etre txt codé en UTF-16 et utilise l'AnSi ce lodicizl est déja pret

    alors comment puis je refaire la meme chose en utf -16

    Merci

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Si tu l'as déjà fait avec succès, alors il suffit de refaire exactement la même chose en changeant uniquement la dernière étape. C'est-à-dire en enregistrant en utf-16.

    Que le document original soit en utf-8 ne t'empêche pas de l'enregistrer dans un autre encodage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. interroger DBpedia en utilisant sparql sous python
    Par phpines dans le forum Général Python
    Réponses: 1
    Dernier message: 24/06/2013, 15h31
  2. utilisation de PATH sous python
    Par saimyas dans le forum Général Python
    Réponses: 4
    Dernier message: 14/06/2011, 16h08
  3. Réponses: 0
    Dernier message: 14/10/2010, 14h47
  4. utiliser xor sous python
    Par nina08 dans le forum Général Python
    Réponses: 6
    Dernier message: 04/08/2008, 15h30
  5. doc sur l'utilisation de bases de données SQL sous python
    Par moon93 dans le forum Général Python
    Réponses: 2
    Dernier message: 03/08/2007, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo