Inspiré par ~~ Faites une simple liste d'alphabets avec Python ~~ (lien brisé), faites une liste de différentes chaînes de caractères vu.
Je pense qu'il peut être utilisé dans les dictionnaires de mots de passe et les jeux de mots.
Il semble que certaines personnes le regardent de temps en temps, alors je vais également expliquer le module dans la section commentaires.
Je pense que la meilleure pratique consiste à utiliser le module string
pour les chaînes de caractères demi-largeur.
>>> import string
>>> help(string)
(Omission)
DATA
ascii_letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
digits = '0123456789'
hexdigits = '0123456789abcdefABCDEF'
letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv...\xaf\xb0...
lowercase = 'abcdefghijklmnopqrstuvwxyz'
octdigits = '01234567'
printable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU...
punctuation = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
whitespace = '\t\n\x0b\x0c\r '
>>> string.digits
'0123456789'
En Python, la gestion des listes et des chaînes n'est pas si différente, je vais donc omettre l'explication de cette partie.
[chr(i) for i in range(97, 97+26)]
# [chr(i) for i in range(ord('a'), ord('z')+1)]
[chr(i) for i in range(65, 65+26)]
# [chr(i) for i in range(ord('A'), ord('Z')+1)]
[chr(i) for i in range(48, 48+10)]
# [chr(i) for i in range(ord('0'), ord('9')+1)]
[chr(i) for i in range(12353, 12436)]
# [chr(i) for i in range(ord('Ah'), ord('Hmm')+1)]
[chr(i) for i in range(12449, 12532+1)]
# [chr(i) for i in range(ord('UNE'), ord('Vers le bas')+2)]
#Si vous n'avez pas besoin de "Vu",-1 "s'il vous plaît
[chr(i) for i in range(65296, 65296+10)]
# [chr(i) for i in range(ord('0'), ord('9')+1)]
C'est impossible. En continu. Cependant, vous ne pouvez rien faire.
[Version UTF-8 de la table de codes kanji commune] Je pense qu'il n'y a pas d'autre choix que d'extraire les kanji de csv et de les lister ...
Après avoir supprimé le champ de commentaire, exécutez ce qui suit.
import csv
kanji = []
with open('/path/to/joyo-kanji-code-u.csv', 'r') as f:
data = csv.reader(f)
for row in data:
kanji.append(row[0])
Ouaip. Une liste de 2136 pièces semble lourde ... Veuillez faire de votre mieux pour faire des choses qui incluent l'extérieur.
Ceci est également impossible en permanence. Gaz rare que la personne qui a mis ASCII est mauvais ... Je n'ai pas trouvé de bonne méthode, je vais donc donner un exemple.
eisu = [chr(i) for i in range(97, 97+26)]
eisu.extend([chr(i) for i in range(65, 65+26)])
eisu.extend([chr(i) for i in range(48, 48+10)])
[chr(i) for i in range(33, 127) if chr(i) not in eisu]
#En passant, si vous changez "33" en "32", un espace demi-largeur sera inséré.
Comme vous l'avez peut-être remarqué, pour tous les caractères demi-largeur, [chr (i) for i in range (32, 127)]
Je pense que c'est un problème de copier et coller un par un, donc je vais mettre une fonction qui renvoie la liste que je veux. Bien sûr, veuillez ajouter des kanji communs et des symboles de demi-largeur par la suite.
#Alphabet inférieur →(97, 123)
#Majuscule alphabet →(65, 91)
#Numéro demi-largeur →(48, 58)
#Hiragana →(12353, 12436)
#Katakana →(12449, 12532+1)
#Nombre pleine largeur →(65296, 65306)
def moji_list(*args):
moji = []
for i in range(len(args)):
moji.extend([chr(j) for j in range(args[i][0], args[i][1])])
return moji
moji_list((97, 123), (65, 91), (48, 58))
# ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
Je pense qu'il est également possible de le spécifier avec ord ().
Recommended Posts