মাসের নাম থেকে মাসের নাম এবং অজগরটির বিপরীতে


96

আমি এমন একটি ফাংশন তৈরির চেষ্টা করছি যা কোনও মাসের সংখ্যাকে সংক্ষিপ্ত মাসের নাম বা সংক্ষিপ্ত মাসের নামকে এক মাসের সংখ্যায় রূপান্তর করতে পারে। আমি ভেবেছিলাম এটি একটি সাধারণ প্রশ্ন হতে পারে তবে আমি এটি অনলাইনে খুঁজে পাইনি।

আমি ক্যালেন্ডার মডিউল সম্পর্কে চিন্তা ছিল । আমি দেখতে পাচ্ছি যে মাসের সংখ্যা থেকে সংক্ষিপ্ত মাসের নামতে রূপান্তর করতে আপনি ঠিক করতে পারেন calendar.month_abbr[num]। যদিও অন্য দিকে যাওয়ার কোনও উপায় আমি দেখতে পাচ্ছি না। অন্য দিককে রূপান্তর করার জন্য একটি অভিধান তৈরি করা কি এটি হ্যান্ডেল করার সর্বোত্তম উপায়? বা মাসের নাম থেকে মাসের সংখ্যাতে এবং এর বিপরীতে যাওয়ার আরও ভাল কোনও উপায় আছে কি?

উত্তর:


98

calendarমডিউলটি ব্যবহার করে একটি বিপরীত অভিধান তৈরি করুন (যা কোনও মডিউলের মতো আপনারও আমদানি করতে হবে):

{month: index for index, month in enumerate(calendar.month_abbr) if month}

পাইথনের সংস্করণগুলিতে ২.7 এর আগে ডিক বোঝার বাক্য গঠন ভাষায় সমর্থনযোগ্য নয় বলে আপনাকে করতে হবে

dict((month, index) for index, month in enumerate(calendar.month_abbr) if month)

77

শুধুই মজার জন্য:

from time import strptime

strptime('Feb','%b').tm_mon

4
এটি কি আপনার লোকেলের উপর নির্ভর করে?
জানুস ট্রয়লসন

পাইথন 2.7 | ভ্যালুআরআর: সময় ডেটা 'ফেভ' ফর্ম্যাটের সাথে মেলে না '% বি'
দিয়েগো ভিনসিয়াস

@ ডিয়েগোভিনেসিয়াস বেশ নিশ্চিত যে 'ফেভ' সেখানে 'ফেব্রুয়ারি' হওয়ার কথা।
ফাওয়াজ ইউসরান

@ ফওয়াওয়াজ ইউসরান দিয়েগো স্থানীয় ভাষায় চেষ্টা করেছিলেন, তবে কমান্ডটি ইংরেজি ভাষার মাসের নামগুলির জন্য কাজ করছে
পাইথোনিক

4
লুপে ব্যবহৃত হলে এটি মারাত্মকভাবে অক্ষম।
মিঃ ল্যান্স ই স্লোয়ান

55

ক্যালেন্ডার মডিউল ব্যবহার :

নম্বর-টু-অ্যাব্রির calendar.month_abbr[month_number]

অ্যাবব্র-টু-নাম্বার list(calendar.month_abbr).index(month_abbr)


উদাহরণ: তালিকা (ক্যালেন্ডার.মন্থ_এবব্র)। ইনডেক্স ('ফেব্রুয়ারি') ফলাফল: 2
কিবিটজফুরু

পুরো মাসের নাম ব্যবহারের জন্য:list(calendar.month_name).index('January')
পল

4
খারাপ নয়, তবে বেশ কয়েক মাসের নাম সন্ধান করার জন্য কোনও লুপে ব্যবহৃত হলে ভয়ঙ্করভাবে দক্ষ নয়।
মিঃ ল্যান্স ই স্লোয়ান

22

এটি করার আরও একটি উপায় এখানে।

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]

আপনি একই জিনিসটি এইভাবে করতে পারেন: month_cal = dict((v,k) for v,k in zip(calendar.month_abbr[1:], range(1, 13)))এবং তারপরেmonth_cal[shortMonth]
ম্যাট ডব্লিউ।

4
এটি একটি ভাল উপায়। আমি যেভাবে পরামর্শ দিয়েছি তার জন্য আমদানির বিবৃতি প্রয়োজন নেই। এটা পছন্দসই বিষয়।
Gi0rgi0s

20

তথ্য উত্স: পাইথন ডক্স

মাসের নাম থেকে মাসের নম্বর পেতে তারিখের সময় মডিউলটি ব্যবহার করুন

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')

15

এখানে একটি আরও বিস্তৃত পদ্ধতি যা পুরো মাসের নামও গ্রহণ করতে পারে

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')

উদাহরণ:

>>> month_string_to_number("October")
10 
>>> month_string_to_number("oct")
10

এটি আমার উপরে থেকে ভাল
Gi0rgi0s


0

উপরে প্রকাশিত ধারণাগুলির উপর ভিত্তি করে তৈরি করা, এটি এক মাসের নামটিকে উপযুক্ত মাসের নাম পরিবর্তন করার জন্য কার্যকর:

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

আপনি যা যাচ্ছেন তা আমি ভুলভাবে লিখছি, তবে আপনি কি নিশ্চিত যে এটি শব্দ হওয়া উচিত নয় [0: 3]?
সিউডোকু

না, আপনি যদি আবার তাকান তবে আপনি দেখতে পাবেন যে প্রথম অক্ষরের শব্দ [0] বড় হাতের অক্ষরে ব্যবহৃত হয়েছে এবং পরবর্তী দুটি অক্ষর, শব্দ [1: 3] এর সাথে যুক্ত হয়েছে। আমি পোস্ট করা কোডটি মাসের শব্দগুলিকে তাদের উপযুক্ত মাসের সংখ্যায় রূপান্তর করতে খুব সুন্দরভাবে কাজ করে।
স্ক্রুপটি

0

মাস নম্বর থেকে পুরো ক্যালেন্ডারের নাম পেতে, আপনি ক্যালেন্ডার.মর্থ_নাম ব্যবহার করতে পারেন। আরও তথ্যের জন্য দয়া করে ডকুমেন্টেশন দেখুন: https://docs.python.org/2/library/cocolate.html

month_no = 1
month = calendar.month_name[month_no]

# month provides "January":
print(month)



-1
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)

আপনার কোডিং ব্যাখ্যা করা সর্বদা আরও ভাল
Badro Niaimi

-1

বিকল্প হিসাবে আপনি নীচে ব্যবহার করতে পারেন।

  1. মাস থেকে মাসের সংখ্যা:

from time import strptime

strptime('Feb','%b').tm_mon

  1. মাসের মাসের সংখ্যা:

import calendar

calendar.month_abbr[2] বা calendar.month[2]

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.