متد ()strptime در پایتون — به زبان ساده
در این مطلب، چگونگی ساخت شی datetime از یک رشته در «زبان برنامهنویسی پایتون» (Python Programming Language) با بهرهگیری از مثالهای گوناگون آموزش داده شده است. متد ()strptime یکی از متدهای رشته در پایتون است این متد یک شی datetime را از یک رشته داده شده میسازد. شایان توجه است که نمیتوان شی datetime را از هر رشتهای ساخت. رشته باید در یک قالب خاص باشد. مثال زیر در این راستا قابل توجه است.
مثال ۱: تبدیل رشته به شی datetime
در مثال پایین، ابتدا از تابع Type در پایتون استفاده میکنیم تا نوع داده شیء مورد نظر را تشخیص دهیم.
1from datetime import datetime
2
3date_string = "21 June, 2018"
4
5print("date_string =", date_string)
6print("type of date_string =", type(date_string))
7
8date_object = datetime.strptime(date_string, "%d %B, %Y")
9
10print("date_object =", date_object)
11print("type of date_object =", type(date_object))
خروجی قطعه کد بالا، به صورت زیر است.
date_string = 21 June, 2018 type of date_string = <class 'str'> date_object = 2018-06-21 00:00:00 type of date_object = <class 'datetime.datetime'>
روش کار متد ()strptime
متد کلاس ()strptime دارای دو آرگومان است.
- رشته (به datetime تبدیل میشود)
- کد فرمت
بسته به رشته و کد فرمت استفاده شده، متد، شی datetime معادل آن را باز میگرداند. توضیحات مربوط به کد مثال ارائه شده در بالا، در ادامه بیان شده است.
- d%: نشانگر روز ماه است. مثال: 01, 02, ..., 31.
- B%: نام ماه کامل است. برای مثال: February ،January و دیگر موارد.
- Y%: سال در چهار رقم. مثال: ۲۰۱۸، ۲۰۱۹ و دیگر موارد.
در ادامه، مثال دیگری از متد ()strptime ارائه شده است.
مثال ۲: تبدیل رشته به شی datetime
1from datetime import datetime
2
3dt_string = "12/11/2018 09:15:32"
4
5# Considering date is in dd/mm/yyyy format
6dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
7print("dt_object1 =", dt_object1)
8
9# Considering date is in mm/dd/yyyy format
10dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
11print("dt_object2 =", dt_object2)
خروجی حاصل از اجرای قطعه کد بالا، به صورت زیر است.
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
لیست کدهای فرمت
در جدول زیر، همه کدهای فرمت قابل استفاده، ارائه شده است.
کد | معنا | مثال |
a% | نام روز هفته به صورت خلاصه | Sun, Mon, ... |
A% | نام روز هفته به صورت کامل | Sunday, Monday, ... |
w% | روز هفته به صورت یک عدد | 0, 1, ..., 6 |
d% | روز هفته به صورت عدد اعشاری | 01, 02, ..., 31 |
d-% | روز ماه به صورت یک عدد اعشاری با پیشصفر | 1, 2, ..., 30 |
b% | نام روز ماه به صورت خلاصه | Jan, Feb, ..., Dec |
B% | نام روز ماه به صورت کامل | January, February, ... |
m% | ماه به صورت عدد اعشاری با پیشصفر | 01, 02, ..., 12 |
m-% | ماه به صورت عدد اعشاری | 1, 2, ..., 12 |
y% | سال، بدون قرن (۱۰۰)، به صورت عدد اعشاری با پیشصفر | 00, 01, ..., 99 |
y-% | سال، بدون قرن (۱۰۰)، به صورت عدد اعشاری | 0, 1, ..., 99 |
Y% | سال با قرن به عنوان عدد اعشاری | 2013, 2019 , ... |
H% | ساعت (ساعت ۲۴ ساعتی) با صورت عدد اعشاری با پیشصفر | 00, 01, ..., 23 |
H-% | ساعت (ساعت ۲۴ ساعتی) با صورت عدد اعشاری | 0, 1, ..., 23 |
I% | ساعت (ساعت 12 ساعتی) با صورت عدد اعشاری با پیشصفر | 01, 02, ..., 12 |
I-% | ساعت (ساعت 12 ساعتی) با صورت عدد اعشاری | 1, 2, ... 12 |
p% | قبل از ظهر یا بعد از ظهر بودن به وقت محلی (AM یا PM) | AM, PM |
M% | دقیقه به صورت عدد اعشاری با پیشصفر | 00, 01, ..., 59 |
M-% | دقیقه به صورت عدد اعشاری | 0, 1, ..., 59 |
S% | ثانیه به صورت عدد اعشاری با پیشصفر | 00, 01, ..., 59 |
S-% | ثانیه به صورت عدد اعشاری | 0, 1, ..., 59 |
f% | میکرو ثانیه به صورت عدد اعشاری با پیشصفر در سمت چپ. | 000000 - 999999 |
z% | اختلاف ساعت هماهنگ جهانی به شکل HHMM+ یا HHMM- | |
Z% | نام منطقه زمانی | |
j% | روزِ سال به صورت عدد اعشاری با پیشصفر | 001, 002, ..., 366 |
j-% | روز سال به صورت عدد اعشاری | 1, 2, ..., 366 |
U% | شماره هفته از سال (با احتساب یکشنبه به عنوان اولین روز هفته)؛ همه روزها در سال جدید پیش از اولین یکشنبه، به عنوان هفته صفر در نظر گرفته میشوند. | 00, 01, ..., 53 |
W% | شماره هفته از سال (با احتساب دوشنبه به عنوان اولین روز هفته)؛ همه روزها در سال جدید پیش از اولین دوشنبه، به عنوان هفته صفر در نظر گرفته میشوند. | 00, 01, ..., 53 |
c% | ارائه تاریخ و زمان محلی مناسب. | Mon Sep 30 07:06:05 2013 |
x% | ارائه تاریخ محلی مناسب. | 09/30/13 |
X% | ارائه زمان محلی مناسب. | 07:06:05 |
%% | یک کاراکتر لفظی (لیترال) % | % |
ValueError در ()strptime
اگر رشته (اولین آرگومان) و کد فرمت (دومین آرگومان) پاس داده شده به ()strptime با یکدیگر تطبیق پیدا نکنند، ValueError نمایش داده میشود. نمونهای از کدی که با ValueError مواجه میشود در ادامه ارائه شده است.
1from datetime import datetime
2
3date_string = "12/11/2018"
4date_object = datetime.strptime(date_string, "%d %m %Y")
5
6print("date_object =", date_object)
در صورت اجرای قطعه کد بالا، خطای زیر نمایش داده خواهد شد.
1ValueError: time data '12/11/2018' does not match format '%d %m %Y'
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون
- آموزش تکمیلی برنامهنویسی پایتون
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
- آموزش پایتون (Python) — مجموعه مقالات جامع وبلاگ فرادرس
- متد Split در پایتون – توضیح به زبان ساده با مثال و کد
^^