Verwenden Sie die Unicodedata-Bibliothek von Python, um Zeichen in voller und halber Breite anzuzeigen

Zweck

Beim Versuch, ein wenig ausgerichtete Zeichenketten in Python anzuzeigen Wenn Sie volle und halbe Breite mischen ...

#Stichprobe
print("%-10s : %s" % ("Taco Reis", "Köstlich"))
print("%-10s : %s" % ("Curry", "Spicy!"))
print("%-10s : %s" % ("General Tacowasa", "Ich kann nicht essen···"))

#Ergebnis
Taco Reis:Köstlich
Curry      : Spicy!
General Tacowasa:Ich kann nicht essen···

Manchmal möchte ich alle 10 Zeichen mit ":" trennen, aber sie sind nicht so ausgerichtet. Mit der Unicodedata-Bibliothek konnte ich diesen Bereich schnell lösen.

Unicodedata-Referenzlink http://docs.python.jp/3.5/library/unicodedata.html

Umgebung

Python-Version ist 3.5.1 Betriebssystem ist CentOS 7.1

Ich habe es im Juli 2016 versucht

Richter in voller Breite und halber Breite

Wenn Sie die Funktion unicodedata.east_asian_width verwenden, wird der Wert für die Breite von East English zurückgegeben, sodass Sie überprüfen können, ob das Zeichen halb oder breit ist. Es gibt 6 Arten von ostenglischer Breite, "F, H, W, Na, A, N". Die drei Zeichen F, W und A sind Zeichen voller Breite.

ostenglisch Breite Referenzlink https://ja.wikipedia.org/wiki/東アジアの文字幅

Wenn ich es benutze, sieht es so aus.

#Stichprobe
import unicodedata
unicodedata.east_asian_width('a')
unicodedata.east_asian_width('Ah')

#Ergebnis
'Na'
'W'

Lassen Sie sowohl den vollen als auch den halben Winkel ausrichten

Wenn Sie die obige Funktion verwenden, um herauszufinden, "wie viele Zeichen mit halber Breite die angegebene Zeichenfolge enthält", Zeichenketten können entweder in voller Breite oder in halber Breite ausgerichtet werden.

Ich habe eine solche Funktion zur Rechtfertigung der Linken gemacht.

import unicodedata
def left(digit, msg):
    for c in msg:
        if unicodedata.east_asian_width(c) in ('F', 'W', 'A'):
            digit -= 2
        else:
            digit -= 1
    return msg + ' '*digit

Ich werde es versuchen.

#Stichprobe
print("%s : %s" % (left(10, "Taco Reis"), "Köstlich"))
print("%s : %s" % (left(10, "Curry"), "Spicy!"))
print("%s : %s" % (left(10, "General Tacowasa"), "Ich kann nicht essen···"))

#Ergebnis
Taco Reis:Köstlich
Curry      : Spicy!
General Tacowasa:Ich kann nicht essen···

・ ・ ・ ・. Im Web ist es schwer zu verstehen, daher werde ich auch ein Bild veröffentlichen. 20160718_qiita用.png

Jetzt ist es möglich, sowohl Zeichen voller Breite als auch Zeichen halber Breite anzuzeigen.

・ ・ ・ Richtig zu rechtfertigen "Rückgabe von Nachricht + '" * Ziffer "zu" Rückgabe' '* Ziffer + Nachricht " Es kann durch Ändern in behoben werden.

das ist alles

Recommended Posts

Verwenden Sie die Unicodedata-Bibliothek von Python, um Zeichen in voller und halber Breite anzuzeigen
[sed] Verwenden Sie sed, um Tabulatorzeichen unter MacOS und Linux zu ersetzen
Zeichen in voller Breite + Zeichen in halber Breite drucken
Ich möchte sowohl den Schlüssel als auch den Wert des Python-Iterators verwenden
So installieren und verwenden Sie Tesseract-OCR
Verwendung von Anfragen (Python Library)
Verwendung des Python-Protokollierungsmoduls
Verwendung von .bash_profile und .bashrc
So installieren und verwenden Sie Graphviz
Verwendung des Python-Kontextmanagers
[Python] Eine Funktion, die die Breite ausrichtet, indem ein Leerzeichen in Text eingefügt wird, das eine Mischung aus voller und halber Breite ist