از میان تمام دیتا تایپها، دادههایی از جنس Text Sequences (متن) تنها مواردی هستند که ما انسانها آنها را به راحتی درک میکنیم اما کامپیوترها هیچگونه درکی از آنها ندارند (این دادهها شامل حروف، لغات، جملهها، و متنهای طولانی میشوند.) با وجود این، به دلیل آنکه استفادهٔ گستردهای از این دادهها میکنیم، این امکان در زبانهای برنامهنویسی مختلف از جمله پایتون فراهم شده است تا این نوع دادهها را به صورت دنبالهای از کاراکترها از طریق کیبورد در کامپیوتر وارد کنیم و در اختیار مفسر قرار دهیم.
موارد استفادهٔ دادههای متنی (استرینگ) در دنیای توسعهٔ نرمافزار بسیار گسترده است به طوری که مثلاً وقتی قصد دارید وارد پنل کاربری خود در سکان آکادمی شوید، باید نام کاربری و رمزعبور خود را در فرم مخصوص این کار وارد کنید که هر دوی آنها از جنس دادههای متنی هستند و یا فرض کنید که در این آموزش سؤالی برای شما پیش میآید و نیاز دارید تا در بخش نظرات این قسمت از آموزش سؤال خود را بپرسید که آنچه در فیلد مخصوص این کار وارد میسازید، همگی از جنس استرینگ هستند.
در پاسخ به این پرسش که کامپیوترها چگونه این دادههای متنی را شناسایی میکنند، باید گفت که کامپیوترها تنها با نسبت دادن یک عدد منحصربهفرد به هر کاراکتر در حافظهٔ خود، آنها را شناسایی میکنند و از همین روی باید ببینیم چهطور میتوانیم دادههای متنی را در پایتون شبیهسازی کنیم و آنها را در اختیار مفسر این زبان قرار دهیم. به طور کلی، دادههای متنی در پایتون نمونههایی از کلاس str
یا String
هستند که این نوع دادهها را به سه صورت کلی میتوان در اختیار مفسر پایتون قرار داد:
- به صورت متنی که بین دو علامت
'
قرار میگیرد. - به صورت متنی که بین دو علامت
"
قرار میگیرد. - به صورت متنی که بین دو علامت
'''
یا"""
قرار میگیرد.
به خاطر داشته باشید |
در حالت عادی مفسر پایتون فضاهای خالی (اِسپیس) بین خطوط کد را نادیده میگیرد اما اگر این فضاهای خالی درون یک رشتهٔ متنی قرار بگیرند، مفسر آنها را به حساب خواهد آورد. |
پیش از این دیدیم که چهطور از دستور ()print
برای چاپ یک رشتهٔ متنی روی صفحهٔ نمایش استفاده کنیم. حال قصد داریم جملهٔ «!Welcome to Sokanacademy.com» را به صورت یک دادهٔ متنی در اختیار مفسر پایتون قرار دهیم تا آن را در قالب دو خط مجزا در خروجی چاپ کند که برای این کار بعد از وارد کردن عبارت «Welcome to» دکمهٔ اینتر را میزنیم تا ادامهٔ جمله را در خط دوم وارد کنیم به طوری که نتیجهٔ خروجی را در حالتهای مختلف وارد کردن دادههای متنی در زیر میبینیم:
>>> print("""Welcome to
Sokanacademy.com!""")
Welcome to
Sokanacademy.com!
>>> print('''Welcome to
Sokanacademy.com!''')
Welcome to
Sokanacademy.com!
>>> print('Welcome to
SyntaxError: EOL while scanning string literal
>>> print("Welcome to
SyntaxError: EOL while scanning string literal
>>>
همانطور که میبینید، در حالتی که متن را بین علامتهای نقلقول سهتایی قرار میدهیم، مفسر به راحتی متن را در چند خط چاپ میکند اما در حالتی که از علامتهای نقلقول تکی یا دوتایی استفاده میکنیم، با خطا مواجه میشویم و مفسر امکان ادامهٔ کار را برای وارد کردن متن به ما نمیدهد که در چنین مواردی باید از استرینگهای کنترلی استفاده کنیم.
آشنایی با مفهوم استرینگهای کنترلی در پایتون
یک استرینگ کنترلی ترکیبی از بعضی کاراکترها یا حروف با کاراکتر \
میباشد که به کاراکتر کنترل معروف است. معمولاً کاراکترهای داخل یک استرینگ دقیقاً به همان صورتی که در میان علامتهای نقلقول ظاهر میشوند در خروجی چاپ خواهند شد اما وارد کردن استرینگهای کنترلی در متن مد نظر باعث میشود تا در زمان استفاده از تابع ()print
کاراکترهای خاصی در خروجی چاپ شود که در متن به طور مستقیم از آنها استفاده نشده است. به طور مثال، خروجی استرینگ کنترلی n\
که مسئول ایجاد یک سطر جدید میباشد به صورت زیر است:
>>> print("Welcome to\nSokanacademy.com!")
Welcome to
Sokanacademy.com!
استرینگ کنترلی "\
برای چاپ کردن علامت "
مورد استفاده قرار میگیرد. فرض کنید بخواهیم متنی همچون «"!Welcome to "Sokanacademy.com» را در خروجی چاپ کنیم. اگر این استرینگ یا رشته را در میان یک علامت نقلقول دوتایی وارد کنیم، خروجی به صورت زیر خواهد بود:
>>> print("Welcome to "Sokanacademy.com!"")
SyntaxError: invalid syntax
میبینید که با خطا مواجه شدیم زیرا مفسر علامتهای "
را به ترتیب با هم جفت میکند و کاراکترهای بین آنها را به صورت یک رشتهٔ متنی به حساب میآورد. در مثال، بالا علامت "
اول و دوم با هم و علامت "
سوم و چهارم نیز با هم جفت میشوند که در این صورت کاراکترهای «!Sokanacademy.com» بین هیچ علامت نقلقولی قرار نمیگیرند و مفسر پایتون نمیتواند نوع این دیتا تایپ را تشخیص دهد و از همین روی با خطا مواجه میشویم. به منظور رفع این مشکل، مثال بالا را با استفاده از کاراکتر کنترلی "\
تصحیح میکنیم به طوری که داریم:
>>> print("Welcome to \"Sokanacademy.com!\"")
Welcome to "Sokanacademy.com!"
استرینگ کنترلی '\
برای چاپ علامت '
مورد استفاده قرار میگیرد و کاربرد آن مانند حالت قبل است به طوری که داریم:
>>> print('Welcome to \'Sokanacademy.com\'!')
Welcome to 'Sokanacademy.com'!
علائم \\
برای چاپ خودِ علامت \
مورد استفاده قرار میگیرند. فرض کنید بخواهیم استرینگی همچون m\n
را در خروجی چاپ کنیم که در حالت عادی مفسر با رسیدن به کاراکترهای ترکیبی n\
آنها را به صورت یک استرینگ کنترلی در نظر میگیرد و مکان نمای صفحه نمایش را در ابتدای سطر بعد قرار میدهد چون این علائم در کنار هم چنین کاربردی دارند. برای پیشگیری از این کار، از استرینگ کنترلی \\
استفاده میکنیم:
>>> print("m\n")
m
>>> print("m\\n")
m\n
>>>
علائم t\
برای ایجاد تَب مورد استفاده قرار میگیرد:
>>> print("First\tSecond\tThird")
First Second Third
در مثال فوق، میبینیم که متن را به صورت افقی توسط این استرینگ کنترلی در زمان چاپ جدولبندی کردهایم.
نکته |
در IDLE اگر بعد از وارد کردن کاراکتر یکی از حروف الفبای انگلیسی کلید Ctrl + Space را فشار دهید، در پنجرهای لیستی از موارد پیشفرض که با آن حرف آغاز میشوند نمایش داده میشود که میتوانید از میان آنها یکی را انتخاب کنید. برای مثال، با وارد کردن حرف p و به دنبال آن فشردن دکمهٔ Ctrl + Space، لیستی از توابع پیشفرض از جایی که اسامی آنها با حرف p آغاز میشوند نمایش داده میشود که میتوانید از میان آنها یکی را انتخاب کنید. |