Лекция · 3.6

Жолдарды өңдеу функциялары мен әдістері

Тіркелу формасында email мекенжайыңды жазғанда, сайт оның «@» таңбасы бар-жоғын қалай тексереді? Немесе іздеу жүйесі сенің сұранысыңдағы сөздерді қалай бөліп алады? Мұның бәрі — жолдарды өңдеу әдістерінің жұмысы. Бүгін Python-ның жолдармен жұмыс істеуге арналған дайын құралдар жинағын үйренеміз.

format() әдісі және регистр түрлендіру

Айнымалы мәнді дайын мәтін ішіне «құюдың» ыңғайлы жолы бар:

Әдіс
format() — фигуралық жақшадағы {} (ауыстыру өрісі) орнына мән қоюға арналған. Бұл — «нүктелік нотация» (жол объектісіне әдіс қолдану).
'Hello, {}!'.format('world')  # 'Hello, world!'

a = "Python is as simple as {0}, {1}, {2}".format("a", "b", "c")
print(a)  # 'Python is as simple as a, b, c'

Сандарды форматтауда ФОРМАТ СПЕЦИФИКАТОРЫ қолданылады — d (бүтін), f (нақты), e (экспоненттік):

"{:5d}".format(123)     # '  123' (5 позиция, бос орынмен толтырылады)
x = 54.321
"{:6.2f}".format(x)     # ' 54.32' (6 позиция, 2 таңба бөлшекте)

Ал регистрді өзгерту әлдеқайда қарапайым:

s = "One Two Three"
s.upper()  # "ONE TWO THREE"
s.lower()  # "one two three"
split() және join() — бір-біріне кері әдістер

Ұзын мәтінді сөздерге «бөлшектеу» немесе керісінше «құрастыру» жиі керек болады:

Әдіс
split() — жолды берілген бөлгіш бойынша БӨЛШЕКТЕРГЕ бөледі (әдепкі бөлгіш — бос орын), нәтиже — тізім (list).
s = 'red blue orange white'
s.split()          # ['red', 'blue', 'orange', 'white']
s = '/usr/local/bin'
s.split('/')       # ['', 'usr', 'local', 'bin']
Әдіс
join()split()-ке КЕРІ әрекет: тізім элементтерін бір жолға біріктіреді, элементтер арасына әдіс шақырылған жолды қояды.
s1 = ['red', 'blue', 'orange', 'white']
'-'.join(s1)   # 'red-blue-orange-white'
Есеп (орта): сөздер санын анықтау

Берілді: сөздердің арасы дәл БІР бос орынмен ажыратылған жол.

Неге бос орын санын +1 етеміз? Егер сөздер арасы дәл бір бос орынмен бөлінген болса, бос орындар саны әрдайым сөздер санынан БІР КЕМ болады.

s = input('matindi eniz=')
print(s.count(' ') + 1)

Жауабы: «Dckm mmcdfcm kkkk dldldld» жолы үшін — 4 сөз.

Тексеру әдістері (is...)

Жолдың мазмұнын білу керек болғанда (тек цифр ме, тек әріп пе) арнайы «сұрақ қоятын» әдістер бар — олардың бәрі True/False қайтарады:

ӘдісТексередіМысал
isdigit()Тек сандардан тұра ма"1024".isdigit() → True
isalpha()Тек әріптерден тұра ма"Arman".isalpha() → True
islower()Тек кіші әріп пе"informatika".islower() → True
isupper()Тек үлкен әріп пе"INFORMATIKA".isupper() → True
Іздеу және алмастыру
Әдіс
find() — жоласты (подстрока) іздейді, табылса — бірінші позицияны, табылмаса — -1 қайтарады. count() — неше рет кездескенін санайды. strip() — жолдың екі жағындағы бос орынды алып тастайды.
s1 = "информатика"
s1.find("тик")       # 7
s1.count('а')        # 2

s2 = '  kkkkk  '.strip()   # 'kkkkk'
Әдіс
replace(ескі, жаңа, n) — жолдағы «ескі» жоласттың n данасын «жаңасына» ауыстырады; n көрсетілмесе — БАРЛЫҚ кездесу ауыстырылады.
Есеп (орта): жоласты алмастыру

Берілді: s = 'ABCIACHFIA' жолы.

Табу керек: барлық «IA» жоласттарын «JOQ»-қа ауыстыру.

s.replace('IA', 'JOQ')

Жауабы: 'ABCJOQCFJOQ'

Есеп (орта): циклмен алмастыру (replace() қолданбай)

Берілді: пайдаланушыдан алынған жол.

Табу керек: барлық «a» әрпін «b»-ға ЦИКЛМЕН ауыстыру.

Неге циклмен? Кейде дайын әдісті қолданбай, өз алгоритміңді жазу керек болады — бұл жолдың әр символын БІР-БІРЛЕП тексеруге үйретеді.

s = input("Joldy engiz: ")
s1 = ""
for c in s:
    if c == "a":
        c = "b"
    s1 = s1 + c
print(s1)

Түсіндірме: for c in s циклі жолдың әр символын кезекпен қарайды; «a» болса «b»-ға ауыстырады, әйтпесе өзгеріссіз қалдырып, нәтиже жолына қосады.

Жауабы: кіріс «abracadabra» үшін — «bbrbcbdbbrb».

🎯 ҰБТ байланысы
Жолдарды өңдеу әдістерінің дайын функциясын танып, дұрыс қолдану — код-талдау есептерінің негізі.
1
find() табылмаса -1 қайтарады, ҚАТЕ емес.
2
split() тізім қайтарады, join() — жол; бағыты керісінше екенін есте сақтау.
3
replace()-те үшінші аргумент (n) көрсетілмесе, БАРЛЫҚ кездесу ауыстырылады.
Сабақ қорытындысы
  • format() — жол ішіне мән құюға арналған, форматтау спецификаторымен (d, f, e) бірге қолданылады.
  • split() жолды тізімге бөледі, join() — тізімді жолға қайта біріктіреді.
  • isdigit(), isalpha(), islower(), isupper() — жол мазмұнын тексеретін логикалық әдістер.
  • find(), count(), strip(), replace() — іздеу, санау және алмастыру құралдары.