آشنایی با نحوه ی استفاده از استرینگ ها در زبان برنامه نویسی پایتون


بین تمام انواع داده ها، داده های از جنس Text Sequences یا داده های متنی -شامل حروف، لغات، جمله ها، و متن های طولانی- تنها مواردی هستند که ما انسان ها آن ها را به راحتی درک می کنیم اما کامپیوترها هیچ گونه درکی از آن ها ندارند. با این وجود، به دلیل آن که ما استفاده ی گسترده ای از این داده ها می کنیم این امکان در زبان های برنامه نویسی از جمله پایتون فراهم شده است تا این نوع داده ها را به صورت دنباله ای از کاراکترها از طریق کی بورد در کامپیوتر وارد کنیم. موارد استفاده ی داده های متنی در دنیای برنامه نویسی بسیار گسترده است. به طور مثال، زمانی که شما قصد دارید وارد پنل کاربری خود در سکان آکادمی شوید، می بایست نام کاربری و رمز عبور خود را در فرم مخصوص این کار وارد کنید که هر دوی آن ها از جنس داده های متنی هستند. و یا فرض کنید که در این آموزش سوالی برای شما پیش می آید و نیاز دارید تا در بخش نظرات این قسمت از آموزش سوال خود را بپرسید! آنچه در فیلد مخصوص این کار وارد می سازید، همگی از جنس داده های متنی هستند.

در پاسخ به این سوال که کامپیوترها چگونه این داده های متنی را شناسایی می کنند، بایستی گفت که کامپیوتر ها تنها با نسبت دادن یک عدد منحصر به فرد به هر کاراکتر در حافظه ی خود آن ها را شناسایی می کنند. بنابراین باید ببینیم چطور می توانیم داده های متنی را در پایتون شبیه سازی کنیم و آن ها را در اختیار مفسر این زبان قرار دهیم. داده های متنی در پایتون نمونه هایی از کلاس str یا String هستند. این نوع داده ها را به سه صورت می توان به مفسر پایتون معرفی کرد:

- به صورت متنی که بین دو علامت ' قرار می گیرد مانند: 'این متن می تواند حاوی علامت نقل قول "دوتایی" باشد.'
- به صورت متنی که بین دو علامت " قرار می گیرد مانند: "این متن می تواند حاوی علامت نقل قول 'تک' باشد. "
- به صورت متنی که بین دو علامت ''' یا """ قرار می گیرد مانند: '''سه علامت نقل قول تکی''' یا """ سه علامت نقل قول دوتایی"""

در حالت معمول مفسر پایتون فضاهای خالی بین خطوط کد را نادیده می گیرد، اما اگر این فضاهای خالی درون یک رشته ی متنی قرار بگیرند مفسر آن ها را به حساب می آورد. پیش از این هم از دیدیم که چطور از دستور ()print برای چاپ یک رشته ی متنی روی صفحه ی نمایش استفاده می کنیم. می خواهیم جمله ی !Welcome to Sokanacademy.com را به صورت یک داده ی متنی در اختیار مفسر پایتون قرار دهیم تا آن را در قالب دو خط در خروجی چاپ کند. اجازه دهید برای این کار بعد از وارد کردن عبارت Welcome to دکمه ی Enter را وارد کنیم تا ادامه ی جمله را در خط دوم وارد کنیم. نتیجه ی خروجی را در حالت های مختلف وارد کردن داده های متنی در زیر می بینیم:

>>> 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\ برای ایجاد Tab مورد استفاده قرار می گیرد. به مثال زیر توجه کنید تا نحوه ی جدول بندی متنی را به صورت افقی توسط این استرینگ کنترلی در زمان چاپ ببینید:

>>> print("First\tSecond\tThird")
First    Second    Third
نکته
در IDLE اگر بعد از وارد کردن کاراکتر یکی از حروف الفبای انگلیسی کلید Tab را فشار دهید در پنجره ای لیستی از موارد پیش فرض که با آن حرف آغاز می شوند برای شما نمایش داده می شود که می توانید از میان آن ها یکی را انتخاب کنید. برای مثال با وارد کردن حرف p و به دنبال آن فشردن کلید Tab لیستی از توابع پیش فرض از جایی که اسامی آن ها با حرف p آغاز می شوند نمایش داده می شود که می توانید از میان آن ها تابع print را انتخاب کنید.
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمان
print('Welcome to "Sokanacademy.com"')m
کاربر میهمان
کاربر میهمان
راه دیگه
print('Welcome to "Sokanacademy.com!"')
soldier
soldier
میشه در مورد نکته یک مثال بزنید با تشکر
محمد حسین
محمد حسین
سلام
ممنون از آموزش خوبتون ، فقط سوالی که واسم پیش اومده اینه که چجوری میتونم خود علامت \\\\\\\\ رو چاپ کنم؟
Nazeri
Nazeri
عالی. ممنون
کاربر میهمان
کاربر میهمان
سلام
ممنون از آموزش های فوق العادتون
خواهش میکنم اگه امکانش هست بگین اسم فونتی که استفاده کردین چی هست؟ و اینکه تنها رنگ فونت و پس زمینه ای که چشم منو اذیت نمیکنه(من مشکل بینایی دارم) همینی هست که شما استفاده کردین... ممنون میشم اگه منو راهنمایی کنید تا IDLE رو مثل شما تنظیم کنم(خودم هر چقدر سعی کردم نشد)
بازم ممنون از سایت خوبتون
ادمین سایت
ادمین سایت
با سلام
برای هایلایت کردن سورس کدهای آموزش ها از سایت زیر استفاده شده است:
http://prismjs.com/

با تشکر
ارادتمند
تیم سکان آکادمی

در پاسخ به

puriaamini1999
puriaamini1999
میشه بگین از این سایت چجوری استفاده کنیم؟ من هیچی نفهمیدم ازش
ممنون

در پاسخ به

محمدعلی بحرینی
محمدعلی بحرینی
سلام خدمت شما کاربر گرامی .
توی خود سایت، توضیحات خوبی در این رابطه هست.
خصوصا این قسمت که مربوط به ساده ترین شکل استفاده از این اسکریپت هست:
http://prismjs.com/#basic-usage

در پاسخ به

mesal-eNaqz
mesal-eNaqz
سلام
ممنون از آموزش خوبتون
در صورت امکان در پایین هر صفحه هم دکمه ی رفتن به بخش قبل و بعد رو بگذارید
با سپاس مجدد
fparviz
fparviz
آره اینجوری خیلی خوب میشه

در پاسخ به

کاربر میهمان
کاربر میهمان
آموزشا عالی ان !
کاربر میهمان
کاربر میهمان
ممنون از خانم اسدی. پس این آموزش های بعدی رو که میزارین. موفق باشید