תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

פעולות על מחרוזות בפייתון

מחבר:
בתאריך:

שפת ה-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 כוכבים

 

 

המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.

למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.

שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.

המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך קוראים בעברית לצ`ופצ`יק של הקומקום?

 

תמונת המגיב

נועם בתאריך: 10.06.2020

מעולה,עזר לי מאוד

תמונת המגיב

רבקה בתאריך: 23.09.2020

הסבר מפורט וברור עזר לי ברמות, תודה רבה

תמונת המגיב

שמחה בתאריך: 28.10.2020

אתר מסודר וברור כל כך!!
תודה
עזר לי מאוד

תמונת המגיב

יותם בתאריך: 27.11.2020

פייתון איך להפוך str לרשימה

תמונת המגיב

אנונימי בתאריך: 29.08.2021

איך אפשר לקבל input ולבדוק כמה תווים קיבלנו?

תמונת המגיב

אנונימית בתאריך: 22.11.2021

איזה כיף לקרוא,למדתי המון!

תמונת המגיב

שירה בתאריך: 15.01.2022

מובן ביותר!

תמונת המגיב

נועה בתאריך: 09.02.2022

עוזר ממשששש!!! מומלץ רצח

תמונת המגיב

אני בתאריך: 19.03.2022

כדי לבדוק את המילה הראשונה בכל שורה בטקסט, איך אפשר לקרוא כל פעם שורה אחת מהטקסט ולפרק אותה למילים?

תמונת המגיב

בדוי בתאריך: 25.07.2022

תודה

תמונת המגיב

יוסי בתאריך: 26.12.2022

תודה רבה! מאוד מובן ומפורט!

תמונת המגיב

יודית בתאריך: 17.04.2023

תודה ענקיתת!!!!! ממש עזר לי

תמונת המגיב

נ בתאריך: 30.04.2023

toda raba

תמונת המגיב

שלמה בתאריך: 21.06.2023

יפה מאוד כל הכבוד

תמונת המגיב

חיים בתאריך: 30.10.2023

מאוד יפה

תמונת המגיב

יעל בתאריך: 17.03.2024

הסבר טוב ועוזר