פיצול מחרוזת וספור תוצאות – Finxter

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
Share on email
פרסומת
X-ray_Promo1


סיכום: פצל את המחרוזת באמצעות פיצול ולאחר מכן השתמש ב-len כדי לספור את התוצאות.

דוגמה מינימלית

print("Result Count: ", len('one,two,three'.split(',')))
# Result Count: 3

ניסוח בעיה

📜בְּעָיָה: ניתן מחרוזת. איך תפצלו את המיתר ותמצאו את מספר המיתרים המפוצלים? האם אתה יכול לאחסן את המחרוזות המפוצלות למשתנים שונים?

דוגמא

# Given String
text="366NX-BQ62X-PQT9G-GPX4H-VT7TX"
# Expected Output:
Number of split strings:  5
key_1 = 366NX
key_2 = BQ62X
key_3 = PQT9G
key_4 = GPX4H
key_5 = VT7TX

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


פִּתָרוֹן

פיצול המחרוזת וספירת מספר התוצאות היא עוגה. כל מה שאתה צריך לעשות הוא לפצל את המחרוזת באמצעות split() פונקציה ולאחר מכן השתמש ב- len שיטה על הרשימה המתקבלת שהוחזרה על ידי שיטת הפיצול כדי לקבל את מספר המחרוזות המפוצלות הקיימות.

קוד:

text="366NX-BQ62X-PQT9G-GPX4H-VT7TX"
# splitting the string using - as separator
res = text.split('-')
# length of split string list
x = len(res)
print("Number of split strings: ", x)

גישה 1

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

קוד:

text="366NX-BQ62X-PQT9G-GPX4H-VT7TX"
# splitting the string using - as separator
res = text.split('-')
# length of split string list
x = len(res)

# Naming and storing variables and values
name = []
for i in range(1, x+1):
    name.append('key_'+str(i))

d = dict(zip(name, res))
for key, value in d.items():
    print(key, "=", value)

גישה 2

כמעט לכל המודולים יש תכונה מיוחדת המכונה __dict__ שהוא מילון המכיל את טבלת הסמלים של המודול. זהו בעצם מילון או אובייקט מיפוי המשמש לאחסון תכונות (ניתנות לכתיבה) של אובייקט.

אז אתה יכול ליצור מחלקה ואז להמשיך ליצור מופע של מחלקה זו שניתן להשתמש בה כדי להגדיר תכונות שונות. לאחר שתפצל את המחרוזת הנתונה וגם תיצור את הרשימה המכילה את שמות המשתנים (כפי שנעשה בפתרון הקודם), תוכל להמשיך ולכווץ את שתי הרשימות ולהשתמש ב- setattr() שיטה להקצאת המשתנה והערכים שלהם אשר ישמשו כתכונות של אובייקט המחלקה שנוצר בעבר. לאחר שהגדרתם את התכונות (כלומר את שמות המשתנים והערכים שלהם) וצירפתם לאובייקט, תוכלו לגשת אליהם באמצעות המובנה __dict__ כפי ש object_name.__dict__

קוד:

text="366NX-BQ62X-PQT9G-GPX4H-VT7TX"
# splitting the string using - as separator
res = text.split('-')
# length of split string list
x = len(res)
print("Number of split strings: ", x)

# variable creation and value assignment
name = []
for i in range(1, x + 1):
    name.append('key_' + str(i))


class Record():
    pass


r = Record()

for name, value in zip(name, res):
    setattr(r, name, value)
print(r.__dict__)

for key, value in r.__dict__.items():
    print(key, "=", value)

גישה 3

זְהִירוּת: פתרון זה אינו מומלץ אלא אם כן זו האפשרות היחידה שנותרה. הזכרתי את זה רק כי זה פותר את המטרה. עם זאת, זו בהחלט לא הדרך הטובה ביותר לגשת לבעיה הנתונה.

קוד:

text="366NX-BQ62X-PQT9G-GPX4H-VT7TX"
# splitting the string using - as separator
res = text.split('-')
# length of split string list
x = len(res)
print("Number of split strings: ", x)
name = []
for i in range(1, x + 1):
    name.append('key_' + str(i))

for idx, value in enumerate(res):
    globals()["key_" + str(idx + 1)] = value
print(globals())
x = 0
for i in reversed(globals()):
    print(i, "=", globals()[i])
    x = x+1
    if x == 5:
        break

הֶסבֵּר: globals() הפונקציה מחזירה מילון המכיל את כל המשתנים בהיקף הגלובלי עם שמות המשתנים כמפתח והערך שהוקצה למשתנה יהיה הערך במילון. אתה יכול להפנות למילון זה ולהוסיף משתנים חדשים לפי שם המחרוזת (globals()['a'] = 'b' מגדיר משתנה a שווה ל "b"), אולם זה בדרך כלל דבר נורא לעשות.

מכיוון שגלובל מחזיר מילון המכיל את כל המשתנים בהיקף הגלובלי, פתרון עוקף כדי לקבל רק את המשתנים שהקצנו הוא לחלץ את צמדי המפתח-ערך האחרונים "N" מהמילון הזה כאשר "N" הוא אורך רשימת המחרוזות המפוצלות .

סיכום

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




קישור לכתבת המקור – 2022-11-24 22:45:06

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on telegram
Telegram
Share on whatsapp
WhatsApp
Share on email
Email
פרסומת
X-ray_Promo1

עוד מתחומי האתר