Lorsque vous essayez d'afficher un peu de chaînes de caractères alignées en python Si vous mélangez pleine largeur et demi-largeur ...
#échantillon
print("%-10s : %s" % ("Riz taco", "Délicieux"))
print("%-10s : %s" % ("Curry", "Spicy!"))
print("%-10s : %s" % ("Général Tacowasa", "Je ne peux pas manger···"))
#résultat
Riz taco:Délicieux
Curry : Spicy!
Général Tacowasa:Je ne peux pas manger···
Parfois, je veux séparer tous les 10 caractères avec ":", mais ils ne s'alignent pas comme ça. En utilisant la bibliothèque unicodedata, j'ai pu résoudre ce problème rapidement.
lien de référence unicodedata http://docs.python.jp/3.5/library/unicodedata.html
la version python est 3.5.1 Le système d'exploitation est CentOS 7.1
Je l'ai essayé en juillet 2016
Si vous utilisez la fonction unicodedata.east_asian_width, elle renverra la valeur de la largeur est anglais, vous pouvez donc vérifier si le caractère est demi-largeur ou pleine largeur. Il existe 6 types de largeur est anglais, "F, H, W, Na, A, N". Les trois caractères F, W et A sont des caractères pleine largeur.
lien de référence de largeur est anglais https://ja.wikipedia.org/wiki/東アジアの文字幅
Quand je l'utilise, ça ressemble à ça.
#échantillon
import unicodedata
unicodedata.east_asian_width('a')
unicodedata.east_asian_width('Ah')
#résultat
'Na'
'W'
Si vous utilisez la fonction ci-dessus pour savoir "combien de caractères demi-largeur la chaîne de caractères spécifiée est", Les chaînes de caractères peuvent être alignées en pleine largeur ou demi-largeur.
J'ai fait une fonction comme celle-ci pour la justification à gauche.
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
Je vais essayer.
#échantillon
print("%s : %s" % (left(10, "Riz taco"), "Délicieux"))
print("%s : %s" % (left(10, "Curry"), "Spicy!"))
print("%s : %s" % (left(10, "Général Tacowasa"), "Je ne peux pas manger···"))
#résultat
Riz taco:Délicieux
Curry : Spicy!
Général Tacowasa:Je ne peux pas manger···
・ ・ ・ ・. C'est difficile à comprendre sur le Web, donc je posterai également une image.
Il est désormais possible d'afficher à la fois des caractères pleine largeur et des caractères demi-largeur.
・ ・ ・ Justifier à droite "Renvoyer msg + '" * chiffre "à" retourner' '* chiffre + msg " Il peut être traité en passant à.
c'est tout
Recommended Posts