Führen Sie mit Python eine Konvertierung in halber und voller Breite mit hoher Geschwindigkeit durch

Einführung in die Bibliothek "mojimoji", mit der japanische Zeichenfolgen mit Python mit hoher Geschwindigkeit in halbe und volle Breite konvertiert werden können.

mojimoji kann in Python mit hoher Geschwindigkeit eine Konvertierung in voller / halber Breite durchführen. Mit der in [hier] eingeführten Methode (http://qiita.com/ikuyamada/items/6b69c0e9b2f8bf337eeb) wird der Konvertierungsprozess intern mit Cython und C ++ unordered_map durchgeführt, was erheblich schneller als die herkömmliche Implementierung ist. Es klappt.

Installation

% pip install mojimoji

Überblick

Mojimoji hat zwei Methoden, han_to_zen und zen_to_han. Sie können auch die Schlüsselwortargumente kana, digit und ascii verwenden, um die Konvertierung von Katakana, Zahl und Alphabet zu deaktivieren.

Umstellung von voller Breite auf halbe Breite

>>> import mojimoji
>>> print mojimoji.zen_to_han(u'Aiu abc012')
Aiuu abc012
>>> print mojimoji.zen_to_han(u'Aiu abc012', kana=False)
Aiu abc012
>>> print mojimoji.zen_to_han(u'Aiu abc012', digit=False)
Aiuu abc012
>>> print mojimoji.zen_to_han(u'Aiu abc012', ascii=False)
Iwabc012

Umstellung von halber auf volle Breite

>>> import mojimoji
>>> print mojimoji.han_to_zen(u'Aiuu abc012')
Aiu abc012
>>> print mojimoji.han_to_zen(u'Aiuu abc012', kana=False)
Iwabc012
>>> print mojimoji.han_to_zen(u'Aiuu abc012', digit=False)
Aiu abc012
>>> print mojimoji.han_to_zen(u'Aiuu abc012', ascii=False)
Aiu abc012

Performance

Vergleichen wir in ähnlicher Weise die Operationsgeschwindigkeit mit den Bibliotheken zenhan und jctconv, die mit Python die halbe und volle Breite konvertieren.

% pip install zenhan
% pip install jctconv
% ipython
In [1]: import mojimoji
In [2]: import zenhan
In [3]: import jctconv
In [4]: s = u'Io Eo 012345' * 10
In [5]: %time for n in range(1000000): mojimoji.zen_to_han(s)
CPU times: user 3.90 s, sys: 0.03 s, total: 3.93 s
Wall time: 3.97 s
In [6]: %time for n in range(1000000): zenhan.z2h(s)
CPU times: user 71.05 s, sys: 0.16 s, total: 71.22 s
Wall time: 71.45 s
In [7]: %time for n in range(1000000): jctconv.z2h(s)
CPU times: user 19.75 s, sys: 0.06 s, total: 19.81 s
Wall time: 19.86 s

Sie können sehen, dass es ungefähr 18 Mal schneller als die in Pure Python implementierte Zenhan-Bibliothek und ungefähr 5 Mal schneller als jctconv ist.

herunterladen

Recommended Posts

Führen Sie mit Python eine Konvertierung in halber und voller Breite mit hoher Geschwindigkeit durch
Messen Sie die WLAN-Geschwindigkeit mit Python
Berechnung der impliziten Volatilität mit hoher Geschwindigkeit durchführen (Marktdatenverarbeitung)
Wie man mit Pythons Selen in Sekundenschnelle kratzt
[Python] Finden Sie die Anzahl der Fibonacci mit hoher Geschwindigkeit (Memoisierung, dynamische Planungsmethode)
[Python] Artikel, der eine schnelle Berechnung der Sparse-Matrix ermöglicht
[Python] Wie man den Bruchteil einer natürlichen Zahl mit hoher Geschwindigkeit erhält
MP3 → WAV-Konvertierung mit Python
Beschleunigen Sie Python mit numba grob
Implementieren Sie Zeichenmodi wie PhotoShop mit hoher Geschwindigkeit mit PIL / Pillow
Konvertieren Sie Memos sofort mit Python 2to3
Führen Sie regelmäßig eine beliebige Verarbeitung mit Python Twisted durch
So erstellen Sie große Dateien mit hoher Geschwindigkeit
Python-Vorlage, die eine Protokollanalyse mit explosiver Geschwindigkeit durchführt
[Python3] Eine Geschichte, die bei der Zeitzonenkonvertierung steckt
Längen- und Breitengradkoordinaten ↔ UTM-Koordinatenkonvertierung mit Python
Korrigieren Sie Schwankungen der Notation in halber und voller Breite in Python
Explosive Geschwindigkeit mit Python (Flasche)! Web-API-Entwicklung
Konvertieren Sie mehrere Protodateien gleichzeitig mit Python
[Python] ABC159D (High School Mathematics nCr) [Bei Coder]