Saya mencoba membuat fungsi yang dapat mengubah nomor bulan menjadi nama bulan yang disingkat atau nama bulan yang disingkat menjadi nomor bulan. Saya pikir ini mungkin pertanyaan umum tetapi saya tidak dapat menemukannya secara online.
Saya sedang berpikir tentang modul kalender . Saya melihat bahwa untuk mengubah dari nomor bulan menjadi nama bulan yang disingkat, Anda bisa melakukannya calendar.month_abbr[num]
. Saya tidak melihat cara untuk pergi ke arah lain. Akankah membuat kamus untuk mengubah arah lain menjadi cara terbaik untuk menangani ini? Atau adakah cara yang lebih baik untuk beralih dari nama bulan ke nomor bulan dan sebaliknya?
Menggunakan modul kalender :
Nomor-ke-Abbr
calendar.month_abbr[month_number]
Abbr-to-Number
list(calendar.month_abbr).index(month_abbr)
sumber
list(calendar.month_name).index('January')
Berikut cara lain untuk melakukannya.
monthToNum(shortMonth): return { 'jan' : 1, 'feb' : 2, 'mar' : 3, 'apr' : 4, 'may' : 5, 'jun' : 6, 'jul' : 7, 'aug' : 8, 'sep' : 9, 'oct' : 10, 'nov' : 11, 'dec' : 12 }[shortMonth]
sumber
month_cal = dict((v,k) for v,k in zip(calendar.month_abbr[1:], range(1, 13)))
month_cal[shortMonth]
Sumber informasi: Python Docs
Untuk mendapatkan nomor bulan dari nama bulan gunakan modul datetime
import datetime month_number = datetime.datetime.strptime(month_name, '%b').month # To get month name In [2]: datetime.datetime.strftime(datetime.datetime.now(), '%a %b %d, %Y') Out [2]: 'Thu Aug 10, 2017' # To get just the month name, %b gives abbrevated form, %B gives full month name # %b => Jan # %B => January dateteime.datetime.strftime(datetime_object, '%b')
sumber
Berikut adalah metode yang lebih komprehensif yang juga dapat menerima nama satu bulan penuh
def month_string_to_number(string): m = { 'jan': 1, 'feb': 2, 'mar': 3, 'apr':4, 'may':5, 'jun':6, 'jul':7, 'aug':8, 'sep':9, 'oct':10, 'nov':11, 'dec':12 } s = string.strip()[:3].lower() try: out = m[s] return out except: raise ValueError('Not a month')
contoh:
>>> month_string_to_number("October") 10 >>> month_string_to_number("oct") 10
sumber
Satu lagi:
def month_converter(month): months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] return months.index(month) + 1
sumber
Berdasarkan gagasan yang diungkapkan di atas, Ini efektif untuk mengubah nama bulan menjadi nomor bulan yang sesuai:
from time import strptime monthWord = 'september' newWord = monthWord [0].upper() + monthWord [1:3].lower() # converted to "Sep" print(strptime(newWord,'%b').tm_mon) # "Sep" converted to "9" by strptime
sumber
Untuk mendapatkan nama kalender lengkap dari nomor bulan, Anda dapat menggunakan calendar.month_name. Silakan lihat dokumentasi untuk lebih jelasnya: https://docs.python.org/2/library/calendar.html
month_no = 1 month = calendar.month_name[month_no] # month provides "January": print(month)
sumber
form month name to number d=['JAN','FEB','MAR','April','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'] N=input() for i in range(len(d)): if d[i] == N: month=(i+1) print(month)
sumber
Anda dapat menggunakan di bawah ini sebagai alternatif.
from time import strptime
strptime('Feb','%b').tm_mon
import calendar
calendar.month_abbr[2]
ataucalendar.month[2]
sumber