Жолдарды өңдеу функциялары мен әдістері
Тіркелу формасында email мекенжайыңды жазғанда, сайт оның «@» таңбасы бар-жоғын қалай тексереді? Немесе іздеу жүйесі сенің сұранысыңдағы сөздерді қалай бөліп алады? Мұның бәрі — жолдарды өңдеу әдістерінің жұмысы. Бүгін Python-ның жолдармен жұмыс істеуге арналған дайын құралдар жинағын үйренеміз.
Айнымалы мәнді дайын мәтін ішіне «құюдың» ыңғайлы жолы бар:
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() — жолды берілген бөлгіш бойынша БӨЛШЕКТЕРГЕ бөледі (әдепкі бөлгіш — бос орын), нәтиже — тізім (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 сөз.
Жолдың мазмұнын білу керек болғанда (тек цифр ме, тек әріп пе) арнайы «сұрақ қоятын» әдістер бар — олардың бәрі 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'
Берілді: пайдаланушыдан алынған жол.
Табу керек: барлық «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».
find() табылмаса -1 қайтарады, ҚАТЕ емес.split() тізім қайтарады, join() — жол; бағыты керісінше екенін есте сақтау.replace()-те үшінші аргумент (n) көрсетілмесе, БАРЛЫҚ кездесу ауыстырылады.format()— жол ішіне мән құюға арналған, форматтау спецификаторымен (d,f,e) бірге қолданылады.split()жолды тізімге бөледі,join()— тізімді жолға қайта біріктіреді.isdigit(),isalpha(),islower(),isupper()— жол мазмұнын тексеретін логикалық әдістер.find(),count(),strip(),replace()— іздеу, санау және алмастыру құралдары.