Corriger les fluctuations de notation demi-largeur et pleine largeur en Python

Objectif de cet article

Créez une fonction pour corriger facilement les fluctuations de notation demi-largeur et pleine largeur.

Préparation

Préparez les personnages avant et après la conversion.

abc_half = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
abc_full = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

digit_half = "0123456789"
digit_full = "0123456789"

katakana_half = "Je suis désolé, je suis désolé, je suis désolé, je suis désolé, je suis désolé, je suis désolé"
katakana_full = "Aiueokakikukekosashisusesotachitsutetonaninunenohahifuhehomamimu memoyayuyorarirurerowon"

punc_half = "!\#$%&\()*+,-./:;<=>?@[\\]^_`{|}~"
punc_full = "!#$%&\()*+,-./:;<=>?@[\\]^_`{|}~"

Puisque le son éclaté du Katakana demi-largeur exprime un caractère avec deux caractères, créez une table de conversion séparément des autres.


tmp01 = "Bâillonnement, serrer, serrer, serrer, serrer, serrer"
tmp02 = "Gagigugegozajizuzezodajizudedobababibbebopapipupepo"

transtable02 = {}
for i in range(len(tmp02)):
    be = tmp01[i*2:i*2+2]
    af = tmp02[i]
    transtable02[be] = af

Dans la fonction clean_text,transtable01 = str.maketrans (avant, après)crée une table de traduction et l'applique avec text = text.translate (transtable01).


def clean_text(text):
    text = str(text).replace("\u3000", " ") #Espace pleine largeur à demi-largeur

    before = abc_full + digit_full + katakana_half + punc_full
    after = abc_half + digit_half + katakana_full + punc_half

    transtable01 = str.maketrans(before, after)
    text = text.translate(transtable01)
    text = text.translate(transtable02)

    return text

Comment utiliser


text = "Mémo Nara Rirure, -. /:; qr gag zaji sezodaji"
clean_text(text)

>>>Mémo Yayuyora Rirure+,-./:qr Gegozajizuzezodaji

c'est tout!

Épilogue

Je pense qu'il y a d'autres fluctuations de notation en japonais, comme l'envoi de nombres kana et kanji, donc je pense que ce serait bien d'en ajouter plus.

référence

[Full-width ⇔ half-width] Bibliothèque recommandée pour ajuster les fluctuations de notation japonaise avec Python [python] Créez une liste de différents types de caractères

Recommended Posts

Corriger les fluctuations de notation demi-largeur et pleine largeur en Python
Traitement pleine largeur et demi-largeur des données CSV en Python
Notation de classe en Python
Convertir la notation CIDR en Python
Pile et file d'attente en Python
Unittest et CI en Python
Différence entre list () et [] en Python
Différence entre == et est en python
Notation inclusive dans l'argument de la fonction Python
Manipuler des fichiers et des dossiers en Python
Affectations et modifications des objets Python
Vérifiez et déplacez le répertoire en Python
Chiffrement avec Python: IND-CCA2 et RSA-OAEP
Hashing de données en R et Python
Synthèse de fonctions et application en Python
Exporter et exporter des fichiers en Python
Inverser le pseudonyme plat et le katakana en Python2.7
Lire et écrire du texte en Python
[GUI en Python] Menu PyQt5 et barre d'outils-
Créer et lire des paquets de messages en Python
Chevauchement d'expressions régulières en Python et Java
Afficher les formules de notation LaTeX en Python, matplotlib
Différence d'authenticité entre Python et JavaScript
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Les modules et packages en Python sont des "espaces de noms"
Évitez les boucles imbriquées en PHP et Python
Différences entre Ruby et Python dans la portée
Modulation et démodulation AM avec Python Partie 2
différence entre les instructions (instructions) et les expressions (expressions) en Python
Valeurs authentiques et vecteurs propres: Algèbre linéaire en Python <7>
Comment écrire le bon shebang dans les scripts Perl, Python et Ruby
Module d'implémentation de file d'attente et Python "deque"
Graphique à lignes pliées et ligne d'échelle en python
Implémenter le filtre FIR en langage Python et C
Différences entre la syntaxe Python et Java
Vérifier et recevoir le port série en Python (vérification du port)
Rechercher et lire des vidéos YouTube avec Python
Différence entre append et + = dans la liste Python
Différence entre non local et global en Python
Ecrire le fichier O_SYNC en C et Python
Comment mettre un espace demi-largeur avant les lettres et les chiffres en Python.
Gérer les "années et mois" en Python
Lire et écrire des fichiers JSON avec Python
Représentez facilement des données graphiques dans le shell et Python
Méthodes et champs privés en python [chiffrement]
Rechercher et vérifier la matrice inverse en Python
Indépendance et base linéaires: Algèbre linéaire en Python <6>
Appelez sudo en Python et mot de passe à saisie automatique
Différences de multithreading entre Python et Jython
Importation de modules et gestion des exceptions en python
Comment utiliser is et == en Python
Projet Euler # 1 "Multiple de 3 et 5" en Python
[Python] Une fonction qui aligne la largeur en insérant un espace dans le texte qui est un mélange de pleine largeur et demi-largeur.
Organisez les modules et les packages Python dans le désordre
Horloge Android correctement correcte avec adb et python
Comment générer une séquence en Python et C ++
Variables Python et types de données appris avec la chimio-automatique
Recevoir et afficher les données de formulaire HTML en Python
Énumération des nombres premiers et jugement des nombres premiers en Python
[Python] Permutation des lignes et des colonnes de données Numpy
[python] Différence entre variable et self. Variable dans la classe