פעולות על מחרוזות בפייתון
שפת ה-Python כוללת שפע של פונקציות שתפקידן לטפל בטקסטים. פונקציות אילה הן פונקציות מחרוזת. בפייתון קיימות כמה עשרות פונקציות מחרוזת, ובמדריך זה אציג מספר פונקציות ופעולות שימושיות במיוחד.
הפונקציה len
הפונקציה len מחזירה את האורך של מחרוזת:
str = 'Hello string functions'
# get the string length
print(len(str))
22
התוצאה היא 22 מפני שהפונקציה len סופרת את כל התווים, כולל הרווחים.
עכשיו בעברית:
str = 'שלום פונקציות מחרוזת'
# get the string length
print(len(str))
והתוצאה היא 20.
כיצד לגשת לתווים בתוך מחרוזת?
פייתון מתייחס למחרוזות כאל רצף ארוך של תווים. לכן, ניתן לגשת לפריטים בתוך המחרוזת באותו אופן שבו ניתן לגשת לפריטים בתוך מערך.
כדי לגשת לאחת האותיות של המחרוזת צריך לציין את מספר האינדקס שלה. לדוגמה, ניגש לאות הראשונה במחרוזת:
str = 'Hello string functions'
print(str[0])
H
נא לזכור! מחשבים מתחילים לספור מ-0. לכן נשתמש באינדקס שמספרו 0 כדי לגשת לאות הראשונה במחרוזת.
לפי אותו היגיון, כדי לגשת לאות השלישית נשתמש באינדקס שמספרו 2:
print(str[2])
l
כדי לספור מסוף המחרוזת נצטרך להשתמש באינדקסים שליליים. לדוגמה, האינדקס שמספרו מינוס 1 מתייחס לאות האחרונה של המחרוזת.
str = 'Hello string functions'
print(str[-1])
s
print(str[-5])
t
בניגוד למערכים, לא ניתן לשנות מחרוזות כי הם אובייקטים מסוג immutable שזה בעברית מדוברת "לא ניתן לשינוי". לכן אם ננסה לשנות אותם כמו שאנחנו עושים במערכים נקבל שגיאה :
str[0] = 'h'
Traceback (most recent call last): File "", line 1, in TypeError: 'str' object does not support item assignment
אז כפי שאפשר לראות אנחנו לא יכולים לשנות מחרוזת על ידי הצבה ישירה, אבל לא לדאוג קיימת פונקציה שמאפשרת לנו לשנות מחרוזות, ועל כך בסעיף הבא.
החלפת חלק במחרוזת ע"י replace
כפי שראינו, לא ניתן לשנות מחרוזת באופן ישיר. במקום זה נשתמש ב-replace.
str = 'Hello string functions'
new_str = str.replace('function', 'method')
את התוצאה של ההחלפה הצבנו לתוך משתנה חדש, new_str. נדפיס אותו:
print(new_str)
Hello string methods
כפי שניתן להציב את התוצאה של ההחלפה לתוך משתנה חדש, אפשר להציב את התוצאה לתוך המשתנה הישן.
str = 'Hello string functions'
str = str.replace('function', 'method')
print(str)
Hello string methods
למה אני יכול להחליף את המילה פונקציות במתודות? מפני שפונקציות המשתייכות לאובייקטים מכונות מתודות, והפונקציות שבהם אנחנו משתמשים כדי לשנות מחרוזות שייכות לאובייקט מחרוזת של פייתון.
רוצים לראות את כל פונקציות המחרוזת של פייתון? השתמשו בפקודה dir על אחת המחרוזות. למחרוזת שלנו במדריך קראנו str אז בואו נריץ עליה את הפקודה:
print(dir(str))
והתוצאה היא רשימה ארוכה של הפונקציות (מתודות) ותכונות שיש לאובייקט המחרוזת של פייתון להציע.
חיתוך (slicing) של מחרוזות
כיצד אנחנו יכולים להוציא חלק של המחרוזת? זה קל. כמו במערכים אנחנו יכולים להוסיף לסוגריים המרובעים עמדה נוספת כדי לציין את תחילת המחרוזת החתוכה כמו גם את סופה.
str = 'Hello string functions'
print(str[5:10])
stri
שימו לב! החיתוך כולל את העמדה הפותחת ואינו כולל את העמדה הסוגרת. לפיכך, המחרוזת החתוכה כוללת את האינדקס שמספרו 5 אך אינה כוללת את האינדקס שמספרו 10.
ניתן להשמיט את העמדה הפותחת ואז פייתון מתחיל מתחילת המחרוזת ועד לעמדה הסוגרת:
print(str[:10])
Hello stri
ניתן להשמיט את העמדה הסוגרת ואז פייתון מתחיל מהאינדקס שציינו ומסיים בסוף המחרוזת:
print(str[5:])
string functions
השמטה של העמדה הפותחת וגם של העמדה הסוגרת תיתן את המחרוזת כולה:
print(str[:])
Hello string functions
כמו שראינו לפני רגע, אפשר להשתמש במספרי אינדקס שליליים מה שגורם להתחלת הספירה מסוף המחרוזת.
print(str[-10:-5])
func
פיצול מחרוזות למערכים באמצעות split
אנחנו יכולים לפצל מחרוזות למערכים סביב איזה תו שנרצה באמצעות הפונקציה split.
הפיצול הפשוט ביותר הוא סביב תווי רווח, לדוגמה:
str = 'Hello string functions'
print(str.split())
['Hello', 'string', 'functions']
הפיצול הוא לא רק סביב רווחים רגילים אלא סביב כל תו של רווח ('\n', '\r', '\t', '\f').
יתרה מכך, אנחנו יכולים לקבוע סביב איזה תו לפצל ע"י העברת פרמטר לפונקציה split. את המחרוזת הבאה נפצל סביב התו נקודותיים (:).
time_str = '18:34:25'
print(time_str.split(':'))
['18', '34', '25']
אותיות קטנות וגדולות
אנחנו יכולים להפוך את כל האותיות לקטנות ע"י הפונקציה lower.
# all to small letters
print(str.lower())
נעזר בפונקציה upper כדי להפוך את כל האותיות לגדולות.
# capitalize all
print(str.upper())
הפונקציה capitalize תהפוך את האות הראשונה במחרוזת לגדולה.
# capitalize the first letter in a string
print(str.capitalize())
str = 'hello String Functions'
print(str.lower()) # hello string functions
print(str.upper()) # HELLO STRING FUNCTIONS
print(str.capitalize()) # Hello string functions
print(str.lower().capitalize()) # Hello string functions
האם המחרוזת מכילה מחרוזת אחרת?
הפונקציה find תחזיר את האינדקס שבו מתחילה המחרוזת או -1 במקרה שלא נמצאה התאמה.
# returns the index where the match starts
# if it doesn't find a match it returns -1
str = 'hello String Functions'
str.find('func')
ננסה לראות את התוצאה במקרה של התאמה ובמקרה של חוסר התאמה.
str = 'hello string functions'
print(str.find('func')) # 13
print(str.find('Func')) # -1
print(str.find('dog')) # -1
חיבור מחרוזות (concatenation)
הדרך הפשוטה ביותר, אם כי לא המומלצת ביותר, לחבר מחרוזות היא באמצעות סימן + בין חלקי המחרוזת.
# concatenate multiple strings
greeting = 'hello'
name = 'dolly'
msg = greeting + name
print(msg)
hellodolly
התוצאה לא מכילה רווחים.
נוסיף את הרווחים על ידי הוספת פלוסים נוספים.
# concatenate multiple strings
greeting = 'hello'
name = 'dolly'
msg = greeting + ' ' + name + '!'
print(msg)
hello dolly!
אנחנו יכולים להשתמש בפלוסים כדי לחבר כמה חלקים שאנחנו רוצים למחרוזת אבל מהר מאוד זה יהפוך למסורבל. הפתרון הוא שימוש במחזיקי מקום:
msg = '{} {}!'.format(greeting, name)
print(msg)
hello dolly!
צירוף פריטים של מערך למחרוזת
אפשר להשתמש בלולאה כדי להפוך פריטים של מערך למחרוזת רציפה.
mylist = ['hello', 'string', 'functions']
str = ""
for item in mylist:
str += item + ' '
print(str)
hello string functions
אבל אפשר לצרף פריטי מערך למחרוזת הרבה יותר בקלות באמצעות הפונקציה join.
str = ' '.join(['hello', 'string', 'functions'])
print(str)
hello string functions
חיבור מחרוזות באמצעות (f-strings)
בדומה לשימוש במחזיקי מקום, אנחנו יכולים להשתמש ב f-strings כדי לחבר מחרוזות.
msg = f'{greeting} {name}!'
כשאנחנו משתמשים ב f-strings אנחנו יכולים להוסיף לוגיקה פשוטה.
msg = f'{greeting.capitalize()} {name.capitalize()}!'
print(msg)
Hello Dolly!
לכל המדריכים בסדרה ללימוד פייתון
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.