Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.

Es gibt eine Python-Bibliothek namens chardet. Wenn Sie die Byte-Zeichenfolge eingeben, können Sie ableiten, in welchen Zeichencode die Byte-Zeichenfolge geschrieben wurde.

Ich wollte Chardet mit Python3 verwenden, aber der Beamte ist noch nicht mit Python3 kompatibel.

Als ich danach suchte, fand ich eine Bibliothek namens python3-chardet, die Chardet gabelte, und entschied mich, sie zu verwenden.

Installation

Herunterladen und installieren von github.

$ git clone [email protected]:bsidhom/python3-chardet.git 

In dem Verzeichnis erstellt in

$ python setup.py install

Dann ist die Installation abgeschlossen.

Experiment

ipython3


import chardet

chardet.detect('abc'.encode('utf-8'))
> {'confidence': 1.0, 'encoding': 'ascii'}

chardet.detect('AIUEO'.encode('utf-8'))
> {'confidence': 0.9690625, 'encoding': 'utf-8'}

chardet.detect('AIUEO'.encode('Shift-JIS'))
> {'confidence': 0.5, 'encoding': 'windows-1252'}

Es hat richtig funktioniert. Ich mache mir ein wenig Sorgen, dass'aiueo'.encode ('Shift-JIS') als Windows-1252 eingestuft wurde, aber da das Vertrauen 0,5 beträgt, ist das Vertrauen von Chardet möglicherweise halb zuversichtlich. Der Satz war zu kurz, daher kann ihm nicht geholfen werden.

Wir haben weitere Experimente durchgeführt, um zu prüfen, ob es beim Erstellen von Skripten für Webseiten verwendet werden kann.

Die Zielwebsite ist price.com http://kakaku.com/. Es ist genau richtig, weil es Shift_JIS verwendet.

ipython3


import chardet
import requests

r = requests.get('http://kakaku.com')
chardet.detect(r.content)
> {'confidence': 0.99, 'encoding': 'SHIFT_JIS'}

Er traf eine gute Entscheidung. Im Gegensatz zum Beispiel von'aiueo'.encode ('Shift-JIS') wurde SHIFT_JIS anstelle von Windows-1252 korrekt beurteilt, da eine Spalte mit langen Bytes für die gesamte Webseite als Ziel ausgewählt wurde. Scheinen. Das Vertrauen hat ebenfalls zugenommen.

Nachtrag

Ich bemerkte später, dass es eine Python-Bibliothek der C-Erweiterung namens [cChardet] gab (https://github.com/PyYoshi/cChardet). Kann mit Python3 verwendet werden. Py Yoshi ist unglaublich.

Da es sich um Pypi handelt, können Sie es unter https://pypi.python.org/pypi/cchardet/pip herunterladen.

$ pip install cchardet

Da es eine große Sache ist, habe ich die obere Seite von Price.com verwendet, um die Geschwindigkeiten zu vergleichen. Der Code lautet wie folgt.

compare.py


import chardet
import cchardet
import requests
import time

if __name__ == '__main__':
    r = requests.get('http://kakaku.com')
    begin_time = time.clock()
    guessed_encoding = chardet.detect(r.content)
    end_time = time.clock()
    print('chardet: %f, %s' % (end_time - begin_time, guessed_encoding))

    begin_time_of_cc = time.clock()
    guessed_encoding_by_cc = cchardet.detect(r.content)
    end_time_of_cc = time.clock()
    print('cChardet: %f, %s' % (end_time_of_cc - begin_time_of_cc, guessed_encoding_by_cc))

Und das Ergebnis ist wie folgt.

chardet: 1.440141, {'confidence': 0.99, 'encoding': 'SHIFT_JIS'}
cChardet: 0.000589, {'confidence': 0.9900000095367432, 'encoding': 'SHIFT_JIS'}

Ist es nicht überwältigend?

Fazit

Verwenden Sie cChardet! !! !!

Recommended Posts

Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Hinweise zur Verwendung von Python (Pydev) mit Eclipse
Hinweise zur Verwendung von Python-Unterprozessen
Hinweise zur Installation von Python3 und zur Verwendung von pip unter Windows7
Hinweise zur Verwendung von dict mit Python [Competition Pro]
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Python-Memo mit perl-ternärem Operator
Python-Notizen zur Verwendung von Perl-Spezialvariablen
Stapel und Warteschlange in Python
Lesen und schreiben Sie NFC-Tags mit Python mit PaSoRi
Unittest und CI in Python
Holen Sie sich Evernote-Notizen in Python
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
Versuchen Sie es mit GUI, PyQt in Python
Sammeln Sie Tweets mit tweepy in Python und speichern Sie sie in MongoDB
Prognostizieren Sie das Geschlecht anhand des Namens mithilfe der Gender-API und von Pykakasi in Python
Zeichnen Sie Zeitreihendaten in Python mit Pandas und Matplotlib
Hinweise zum Lesen und Schreiben von float32 TIFF-Bildern mit Python
GUI-Programmierung in Python mit Appjar
Hinweise zu Python- und Wörterbuchtypen
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Unterschied zwischen list () und [] in Python
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
Unterschied zwischen == und ist in Python
Zeigen Sie Fotos in Python und HTML an
Sortieralgorithmus und Implementierung in Python
Authentifizierung mit Tweepy-User-Authentifizierung und Anwendungsauthentifizierung (Python)
Hinweise zur Verwendung von MeCab aus Python
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Hinweise zur Verwendung von Post-Receive und Post-Merge
Versuchen Sie es mit LevelDB mit Python (plyvel)
Zuweisungen und Änderungen in Python-Objekten
Überprüfen und verschieben Sie das Verzeichnis in Python
Verwendung globaler Variablen in Python-Funktionen
Verschlüsselung mit Python: IND-CCA2 und RSA-OAEP
Hinweise zur Installation von Python mit PyEnv
Hashing von Daten in R und Python
Clustering und Visualisierung mit Python und CytoScape
Mal sehen, wie man Eingaben in Python verwendet
Gesamtleistung in Python (mit Funktools)
Funktionssynthese und Anwendung in Python
Hinweise zur Verwendung von rstrip mit Python.
Exportieren und Ausgeben von Dateien in Python
(Persönliche Notizen) Python-Metaklassen und Metaprogrammierung
Reverse Flat Pseudonym und Katakana in Python2.7
Lesen und Schreiben von Text in Python
[GUI in Python] PyQt5-Menü und Symbolleiste-
Handschriftliche Zeichenerkennung mit KNN in Python
Versuchen Sie es mit LeapMotion mit Python
Suche nach Tiefenpriorität mit Stack in Python
Bei Verwendung regulärer Ausdrücke in Python
Erstellen und lesen Sie Messagepacks in Python
GUI-Erstellung in Python mit tkinter 2
Erstellen und testen Sie mit Docker in wenigen Minuten eine OpenCV- und Python-Umgebung
Ich habe Node.js und Python beim Erstellen eines Miniaturbilds mit AWS Lambda verglichen
Überlappende reguläre Ausdrücke in Python und Java