Python'da multiline string'lar: to'liq qo'llanma
Python'da multiline string yozishning 5 ta usulini o'rganing: uchtalik tirnoqlar, f-string'lar, join va boshqalar. Real hayotiy misollar ham kiritilgan.
Muallif: Kimberly Fessel
Agar Python'ga matnli ma'lumot kiritsangiz, katta ehtimol bilan uni str (string) ma'lumot tipida saqlaysiz. String'larni yaratish nisbatan oson: matningizni shunchaki yakka ('hi') yoki qo'sh tirnoq ("hi") ichiga oling.
Ammo aytadigan gapingiz ko'p bo'lsa-chi? Matningiz juda uzun bo'lib, kodning bir necha qatoriga cho'zilishi kerak bo'lsa-chi? Yoki console'ingizda elementlar ro'yxatini bir necha qatorda chiqarishingiz kerak bo'lsa-chi?
Ushbu maqolada sizni Python'dagi multiline string'lar bilan bosqichma-bosqich tanishtiramiz. Ularni yaratishning besh xil usulini ko'rasiz, so'ng real hayotiy qo'llanish holatlari va yuzaga kelishi mumkin bo'lgan tuzoqlarni muhokama qilgach, vazifaga mos usulni tanlashingizga yordam beradigan to'liq taqqoslash jadvali bilan yakunlaymiz. Keling, boshlaymiz.
Python'da multiline string nima?
Multiline string — Python kodingizda bir qatordan ko'proq joyni egallaydigan yoki natijada bir necha qatorga yoyilgan matn hosil qiladigan matn. U odatda katta hajmdagi matn uchun ishlatiladi va email, SQL query, template yoki formatlangan natija kabi muayyan tuzilmaga ega bo'lishi mumkin.
Multiline string yaratishning keng tarqalgan usullaridan biri — uchtalik tirnoqlar, xuddi quyidagi misoldagidek:
email = """Hi,
I just wrote a new article about Python multiline strings.
Cheers,
Kim"""
print(email)
# Expected result:
# Hi,
#
# I just wrote a new article about Python multiline strings.
#
# Cheers,
# Kim
Python uchtalik tirnoqlar ichidagi matnda newline character'lar va tab'lar kabi whitespace'ni saqlab qoladi.
Python'da multiline string yaratishning 5 ta usuli
Python'da multiline string yaratishda sizda bir nechta turli variant bor. Keling, hozir bir nechta mashhur usullar va ularning sintaksisini ko'rib chiqamiz.

Uchtalik tirnoqlar (""" yoki ''')
Multiline string'larni ko'pincha uchtalik tirnoqlar ichiga olingan holda ko'rasiz — shunda ular yaxlit bitta matn bloki deb hisoblanadi. Shunday string yaratish uchun avval uchta tirnoq belgisini yozing: qo'sh (""") yoki yakka ('''). So'ng matningizni qo'shing va yana uchta mos tirnoq belgisi bilan yakunlang.
Python uchtalik tirnoqlar ichidagi har qanday bo'shliq, tab yoki qator uzilishini saqlab qoladi va uchtalik tirnoqli string ichida yakka yoki qo'sh tirnoqlarni escape qilmasdan ishlatishingiz mumkin:
message = """Let her know that I said, "Hi!"
She'll probably say, "Hello!" back."""
print(message)
# Expected result:
# Let her know that I said, "Hi!"
# She'll probably say, "Hello!" back.
Bir necha qatorga cho'zilishiga qaramay, uchtalik tirnoqli string'lar baribir oddiy Python str obyektlari bo'lib qoladi.
type(message)
# Expected result:
# str
Uchtalik tirnoqlar ko'pincha .py fayl, Python funksiyasi yoki sinf boshidagi docstring'larda uchraydi.
def calculate_area(length, width):
"""
Calculate the area of a rectangle.
Parameters:
length (float): The length of the rectangle.
width (float): The width of the rectangle.
Returns:
float: The area of the rectangle.
"""
return length * width
Qavslar va yonma-yon string'lar
O'qilishi oson bo'lishi uchun string'ni kodning bir necha qatoriga yoyishingiz ham mumkin. Shunchaki string'larni bir-birining yoniga qo'ying va bir necha qatorga ruxsat berish uchun butun matn blokini qavslar ichiga oling. Python bo'laklarni avtomatik ravishda qaytadan bitta string'ga birlashtiradi:
text = (
"This string is quite long, "
"and I put it on multiple lines "
"so you can easily read it."
)
print(text)
# Expected result:
# This string is quite long, and I put it on multiple lines so # you can easily read it.
Uchtalik tirnoqlardan farqli o'laroq, bu usul \n newline escape sequence'ini qo'shmaguningizcha qator uzilishlarini saqlamaydi, shuning uchun bu misoldagi string'lar bitta qatorda chiqadi. Shuningdek, har bir alohida string bo'lagini tirnoq ichiga olishingiz kerak. So'zlar bir-biriga qo'shilib ketmasligi uchun qator oxiridagi tirnoq belgilari ichiga bo'shliq qo'shib qo'yishingiz lozim.
Bu Python texnikasi PEP 8'ning qator uzunligi bo'yicha tavsiyalariga rioya qilishga yordam beradi. U o'qishga oson, muammolarga kamroq moyil va qatorni davom ettirish uchun ko'pincha backslash'lardan afzal ko'riladi.
Backslash bilan qatorni davom ettirish
Backslash (\) qatorni davom ettirish belgisi hisoblanadi. Bu texnika yonma-yon string'lar atrofidagi qavslar afzal uslubga aylanishidan oldin mashhur edi. Backslash usuli newline character'larni saqlamaydi va string'ingizning har bir qismini tirnoq ichiga olishingiz kerak bo'ladi.
text = "The backslash means this " \
"multiline string belongs together."
print(text)
# Expected result:
# The backslash means this multiline string belongs together.
String bo'laklari ichida kerakli joylarga bo'shliq qo'yishni unutmang, chunki Python matnni aynan yozilganidek birlashtiradi. Agar tasodifan backslash'dan keyin hatto bitta bo'shliq qoldirsangiz ham, Python SyntaxError chiqaradi. Bunday mo'rtligi sababli PEP 8 imkon qadar qavslardan foydalanishni tavsiya qiladi.
Qator uzilishlari bilan str.join()
Python'ning str.join() method'i list, tuple yoki set kabi string'lar to'plamini bitta yaxlit string'ga birlashtirish orqali string concatenation'ni bajaradi. Python matn elementlari orasiga nima qo'yishni bilishi uchun separator string berishingiz kerak bo'ladi.
Agar separator sifatida newline character'ni tanlasangiz, chiqarilganda elementlar alohida qatorlarda paydo bo'ladi:
exercise_list = ["swimming", "running", "rollerblading"]
exercise_str = "\n".join(exercise_list)
print(exercise_str)
# Expected result:
# swimming
# running
# rollerblading
Multiline f-string'lar
Python f-string'lari o'zgaruvchilar va expression'larni to'g'ridan-to'g'ri string'laringiz ichiga kiritish orqali string formatting'ni bajarish imkonini beradi. Multiline f-string'larni oddiy multiline string'lar kabi uchtalik tirnoqlar yordamida yarating. String oldiga f prefiksini qo'ying, expression'larni {} ichiga oling va multiline matn uchun uchtalik tirnoqlardan foydalaning. Mana shu sintaksisni ko'rsatadigan misol:
name = "George"
n_messages = 4
email = f"""Hi {name},
You have {n_messages} new messages.
Best,
Administrator"""
print(email)
# Expected result:
# Hi George,
#
# You have 4 new messages.
#
# Best,
# Administrator
Python string'dagi o'zgaruvchilarni ularning qiymatlari bilan almashtiradi va multiline f-string'lar ham, xuddi uchtalik tirnoqli string'lar kabi, whitespace'ni yozilganidek saqlaydi.
Indentation tuzog'i (va uni qanday tuzatish mumkin)
Toza ko'rinadigan kod yozishni yoqtirasizmi? Balki o'qish qulay bo'lishi uchun indent qilingan bloklarni afzal ko'rarsiz? Python'da buni uchtalik tirnoqli string bilan qilishga urinsangiz, mana nima bo'lishi mumkin:
statement = """I really just want
my code to look nice
and clean."""
print(statement)
# Expected result:
# I really just want
# my code to look nice
# and clean.
Yodda tutingki, uchtalik tirnoqli string'lar whitespace'ni, jumladan indentation'ni ham, aynan yozilganidek saqlaydi.
Bu indentation tuzog'i uchtalik tirnoqli string'larga ham, multiline f-string'larga ham tegishli. Yaxshiyamki, uni tuzatishning bir nechta usuli bor.
String'ingizni chap chetga tekislang
Juda oddiy: boshidanoq indentation qo'shmang, shunda uni natijada ham ko'rmaysiz.
textwrap.dedent()'dan foydalaning
Indentation'ni olib tashlash uchun uchtalik tirnoqli string'ingizga dedent() deb ataladigan Python funksiyasini qo'llashingiz mumkin. Unga kirish uchun textwrap modulini import qilishingiz kerak bo'ladi, lekin uni o'rnatishingiz shart emas, chunki bu modul standart Python bilan birga keladi:
import textwrap
statement = textwrap.dedent("""\
I really just want
my code to look nice
and clean.
""")
print(statement)
# Expected result:
# I really just want
# my code to look nice
# and clean.
textwrap.dedent() barcha qatorlarda umumiy bo'lgan boshlang'ich indentation'ni olib tashlaydi. Agar blok bo'ylab indentation bir xil bo'lmasa, u ortiqcha bo'shliqlarni to'liq olib tashlamasligi mumkin. Statement'ning birinchi qatoridagi backslash (\) string boshida ortiqcha bo'sh qator paydo bo'lishining oldini oladi. U matningizni ikkinchi qatordan boshlab to'g'ri indent qilish imkonini beradi.
Boshqa multiline string usuliga o'ting
Qavslar va backslash bilan qatorni davom ettirish kabi boshqa usullar whitespace'ni saqlamaydi, shuning uchun indentation'ni afzal ko'rsangiz, ularni tanlashingiz mumkin.
Python kodidagi real hayotiy qo'llanish holatlari
Siz multiline string literal'lar yoki natijaning bir necha qatoriga yoyilgan string'larni yaratishning ko'plab usullarini ko'rdingiz. Endi esa Python'da multiline string'larning bir nechta amaliy qo'llanilishini ko'rib chiqamiz.
SQL query'lar
Ko'plab tashkilotlar o'z ma'lumotlarini relational ma'lumotlar bazalarida saqlashni va ularga SQL dasturlash tili yordamida query yuborishni tanlaydi. SQL query'lar ko'pincha uzun bo'ladi va o'qilishi oson bo'lishi uchun matnning bir necha qatorida yoziladi. SQL'ni Python'ga joylashtirishning bir nechta usuli bor (pandas, SQLAlchemy va hokazo), shuning uchun query'larni tuzishda multiline string'larni tez-tez uchratasiz.
import pandas as pd
import sqlite3
# Set up a connection to your database
conn = sqlite3.connect(sales.db)
# Build query and bring data into pandas
query = """
SELECT
customer_id,
name,
email,
created_at
FROM customers
WHERE created_at >= '2026-01-01';
"""
df = pd.read_sql(query)
SQL query'lar uchun odatda indentation haqida qayg'urishingiz shart emas, chunki ko'pchilik ma'lumotlar bazalari whitespace'ni e'tiborsiz qoldiradi.
Bir necha qatorli HTML/email template'lar
HTML va email template'lar tabiiy ravishda bir necha qatorga cho'ziladi, shuning uchun multiline string'lar ularni Python'da o'qishni ancha osonlashtiradi. Multiline f-string'lar ayniqsa foydali, chunki ular formatlashni saqlab qoladi va dinamik kontentni to'g'ridan-to'g'ri template'ga joylaydi.
Masalan, mana mijoz xarid qilganidan keyin Flask yoki Django ilovangiz render qilishi mumkin bo'lgan shaxsiylashtirilgan HTML xabar:
name = "Alicia"
order_id = 54321
email_html = f"""
<html>
<body>
<h1>You made a great purchase, {name}!</h1>
<p>Your order #{order_id} has been confirmed.</p>
<p>Thanks for shopping with us!</p>
</body>
</html>
"""
Template yangi qatorlar va indentation'ni aynan yozilganidek saqlaydi, chunki multiline f-string'lar whitespace'ni o'zgartirmaydi, placeholder'lar esa mijozga xos qiymatlar bilan almashtiriladi. Bundan tashqari, uzun bir qatorli HTML string'ga qaraganda bu kodni o'qish va debug qilish osonroq.
Multi line string'lar uchun best practice'lar va tuzoqlar
Multi line string'larni sinovdan o'tkazishdan oldin yodda tutish kerak bo'lgan yana bir nechta best practice va tuzoq bor.
Qo'sh tirnoqlar va yakka tirnoqlar
Python'da multiline string'larni uchtalik tirnoqqa olishda qo'sh (""") va yakka (''') tirnoqlar bir xil ishlaydi. Ular orasidagi tanlov sizga bog'liq va kodlash uslubingizga asoslanadi. Amalda ko'pincha uchtalik qo'sh tirnoqlarni ko'rasiz, ammo uchtalik yakka tirnoqlar ham docstring'lar kabi narsalar uchun ishlaydi. PEP 8 birini ikkinchisidan afzal ko'rmaydi, lekin o'qilishini yaxshilash uchun bitta loyiha doirasida izchil bo'lishga intiladi.
Shuningdek, ikkitalik emas, uchtalik tirnoq qo'yganingizni tekshirib ko'rishingiz kerak. Ikkita tirnoq ("" yoki '') bitta bo'sh string hosil qiladi va matn atrofiga qo'yilsa, SyntaxError beradi.
Python dasturlaridagi uzun string'lar uchun PEP 8
PEP 8 qator uzunligi maksimal 79 belgi bo'lishini tavsiya qiladi, shuning uchun Python'da uzunroq string'larni saqlashda ushbu maqolada muhokama qilingan strategiyalardan birini qo'llashingiz kerak bo'ladi. Masalan, agar matnning bir paragrafini saqlashingiz kerak bo'lsa, yonma-yon string'lar atrofidagi qavslar qo'l keladi:
moby_dick_paragraph = (
"Call me Ishmael. Some years ago—never mind how long precisely—"
"having little or no money in my purse, and nothing particular "
"to interest me on shore, I thought I would sail about a "
"little and see the watery part of the world. It is the way I "
"have of driving off the spleen and regulating the circulation."
)
Tezkor tanlov qo'llanmasi – qaysi biri Pythonic usul?
| Usul | Whitespace saqlanadimi? | Eng mos maqsad | Qo'llanish holati | Ogohlantirishlar |
|---|---|---|---|---|
| Uchtalik tirnoqlar | Ha | Formatlangan multiline matnni saqlash | Email'lar, SQL, docstring'lar | Indentation tuzog'i |
| Qavslar + yonma-yon string'lar | Yo'q | Uzun string'larni kod qatorlariga bo'lish | Uzun matn, Pythonic usul | Bo'shliqlarni qo'lda boshqarish kerak |
| Backslash bilan davom ettirish | Yo'q | Uzun string'larni kod qatorlariga bo'lish | Legacy/oddiy davom ettirish | Mo'rt; qator oxiridagi bo'shliqlar xatoga sabab bo'ladi |
| str.join() | Separator'ga bog'liq | String'lar to'plamidan multiline matn yaratish | List'lar, hisobotlar, matnli fayllarni qayta ishlash | Barcha elementlar string bo'lishi kerak |
| Multiline f-string'lar | Ha | O'zgaruvchilar bilan formatlangan multiline matnni saqlash | Shaxsiylashtirilgan email'lar, HTML, template'lar | Indentation tuzog'i |
Xulosa
Uzun string'lar Python'ning bir necha qatoriga toshib ketganda, ularni uchtalik tirnoqlarga o'rashingiz, yonma-yon string'lar bilan qavslardan foydalanishingiz yoki backslash'lar qo'shishingiz mumkin. Newline character'lar bilan string concatenation uchun separator sifatida \n bilan str.join()'dan foydalaning yoki multi-line string'ingizda dinamik o'zgaruvchilar kerak bo'lsa, multiline f-string'ni sinab ko'ring. Texnikani tanlashda har bir usulning maqsadini — va ogohlantirishlarini! — inobatga oling.
Multiline string'lar haqida ko'proq o'rganishga tayyormisiz? Python roadmap'imizdagi boshqa maqolalarni ko'zdan kechiring va ushbu boshlang'ich prompt bilan AI Tutor'ni sinab ko'ring: