Python calendrier: jour/mois dans les noms de paramètres régionaux spécifiques
Je suis à jouer avec Python calendrier module de la bibliothèque standard. Essentiellement, j'ai besoin d'une liste de tous les jours d'un mois, comme suit:
>>> import calendar
>>> calobject = calendar.monthcalendar(2012, 10)
>>> print calobject
[[1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14], [15, 16, 17, 18, 19, 20, 21], [22, 23, 24, 25, 26, 27, 28], [29, 30, 31, 0, 0, 0, 0]]
Maintenant ce que j'ai aussi besoin sont les noms des mois et des jours dans une locale spécifique. Je n'ai pas trouver un moyen d'obtenir à partir de la calobject
lui-même - mais j'ai été en mesure de les obtenir, de cette façon:
>>> import calendar
>>> calobject = calendar.LocaleTextCalendar(calendar.MONDAY, 'de_DE')
>>> calobject.formatmonth(2012, 10)
' Oktober 2012\nMo Di Mi Do Fr Sa So\n 1 2 3 4 5 6 7\n 8 9 10 11 12 13 14\n15 16 17 18 19 20 21\n22 23 24 25 26 27 28\n29 30 31\n'
Donc Oktober
est le de_DE
nom pour le mois d'octobre. Des beaux. L'information doit être là. Je me demande si je peux accéder à ce mois nom d'une certaine manière sur une plaine calendar
objet au lieu d'une calendar.LocaleTextCalendar
objet. Le premier exemple (la liste), c'est vraiment ce dont j'ai besoin et je n'aime pas l'idée de créer deux objets pour obtenir les noms localisés.
Quelqu'un a une idée intelligente?
calendar.month_name[month]
, où month
est le nombre entier qui représente le mois.Grâce Alok. Oui, mais c'est dans les paramètres régionaux par défaut puis
OriginalL'auteur Daniel | 2012-10-23
Vous devez vous connecter pour publier un commentaire.
C'est à partir du code source de la
calendar
module:TimeEncoding
etmonth_name
peuvent être importés à partir de lacalendar
module. Cela donne à la méthode suivante:Pour moi le décoder étape n'est pas nécessaire, il suffit d'impression
month_name[3]
dans leTimeEncoding
contexte imprime "mars", qui est norvégien pour "mars".Pour les jours de semaine il y a une méthode similaire à l'aide de la
day_name
etday_abbr
dicts:day_name
.Je pense que je vais coder en dur les noms de mois et de jours (prend deux lignes de code). Nous en avons seulement besoin en allemand et en le mois, le jour, les noms sont peu susceptibles de changer dans les prochaines années. Merci bien.Pas de problème. Même si vous n'avez pas besoin, la réponse est maintenant ici pour la prochaine personne qui en a besoin.
Ouais. C'est juste trop compliqué. Je pensais qu'il y est un moyen facile d'accéder à cette information, comme la mise en place d'un calendrier de l'instance avec une locale spécifique.
Dans pyhton3
TimeEncoding
est renommé pourdifferent_locale
. Il travaille aussi un peu différente, ledecode
appel n'est plus nécessaire.OriginalL'auteur Lauritz V. Thaulow
Ha! Trouvé un moyen facile d'obtenir localisée jour/mois nom:
TimeEncoding
contexte est tout simplement une façon de temporairement les paramètres régionaux. Si vous voulez permanent, appelantsetlocale
directement est ok. Je suppose que l'étape de codage n'est nécessaire que si vous avez des caractères unicode dans le mois, le jour, les noms, qui il me semble n'est pas le cas en allemand.Oh, d'accord. Oui, nous avons des caractères unicode: >>> calendrier.month_name[3] 'M\xc3\xa4rz'
OriginalL'auteur Daniel
Voici le mois partie de Lauritz la réponse de mise à jour pour Python 3:
OriginalL'auteur Thomas Parslow