Η κλάση str προσφέρει πολλές χρήσιμες μεθόδους για την εργασία με συμβολοσειρές και τη σύνθεσή τους.
Αυτές περιλαμβάνουν αναζήτηση, καθαρισμό, διαχωρισμό, μετασχηματισμό, μετάφραση και πολλές άλλες τεχνικές.
Οι συμβολοσειρές είναι ακολουθίες από σημεία κώδικα Unicode. Μεμονωμένοι "χαρακτήρες" ή σημεία κώδικα (συμβολοσειρές μήκους 1) μπορούν να αναφερθούν με αριθμό 0-based index από τα αριστερά, ή με αριθμό -1-based index από τα δεξιά.
Οι συμβολοσειρές υλοποιούν όλες τις συνήθεις πράξεις ακολουθίας.
Μπορείς να τις διατρέξεις χρησιμοποιώντας τη σύνταξη for item in <str> ή for index, item in enumerate(<str>).
Μπορείς επίσης να τις συνενώσεις χρησιμοποιώντας <str> + <other str> ή <str>.join(<iterable>).
Οι συμβολοσειρές είναι αμετάβλητες, που σημαίνει ότι η τιμή ενός αντικειμένου str στη μνήμη δεν μπορεί να αλλάξει.
Οι συναρτήσεις ή οι μέθοδοι που επενεργούν σε μια str (όπως αυτές που μαθαίνουμε εδώ) επιστρέφουν ένα νέο instance αυτού του αντικειμένου str αντί να τροποποιήσουν την αρχική str.
Παρακάτω ακολουθεί μια μικρή επιλογή από μεθόδους συμβολοσειρών της Python. Για τον πλήρη κατάλογο, δες την κλάση str στην τεκμηρίωση της Python.
<str>.title() αναλύει μια συμβολοσειρά και γράφει με κεφαλαίο τον πρώτο "χαρακτήρα" κάθε "λέξης" που βρίσκει.
Στην Python, αυτό εξαρτάται σε μεγάλο βαθμό από τον κωδικοποιητή γλώσσας που χρησιμοποιείται και από το πώς η συγκεκριμένη γλώσσα αναπαριστά λέξεις και χαρακτήρες.
Μπορεί επίσης να ισχύουν κανόνες τοπικών ρυθμίσεων για μια γλώσσα ή ένα σύνολο χαρακτήρων.
man_in_hat_th = 'ผู้ชายใส่หมวก'
man_in_hat_ru = 'мужчина в шляпе'
man_in_hat_ko = '모자를 쓴 남자'
man_in_hat_en = 'the man in the hat.'
>>> man_in_hat_th.title()
'ผู้ชายใส่หมวก'
>>> man_in_hat_ru.title()
'Мужчина В Шляпе'
>>> man_in_hat_ko.title()
'모자를 쓴 남자'
>> man_in_hat_en.title()
'The Man In The Hat.'
<str>.endswith(<suffix>) επιστρέφει True αν η συμβολοσειρά τελειώνει με <suffix>, αλλιώς False.
>>> 'My heart breaks. 💔'.endswith('💔')
True
>>> 'cheerfulness'.endswith('ness')
True
# Punctuation is part of the string, so needs to be included in any endswith match.
>>> 'Do you want to 💃?'.endswith('💃')
False
>> 'The quick brown fox jumped over the lazy dog.'.endswith('dog')
False
<str>.strip(<chars>) επιστρέφει ένα αντίγραφο της str με τα αρχικά και τα τελικά <chars> αφαιρεμένα.
Τα σημεία κώδικα που καθορίζονται στο <chars> δεν είναι πρόθεμα ή επίθεμα: όλοι οι συνδυασμοί των σημείων κώδικα θα αφαιρεθούν ξεκινώντας από τα δύο άκρα της συμβολοσειράς.
Αν δεν καθοριστεί τίποτα για το <chars>, θα αφαιρεθούν όλοι οι συνδυασμοί σημείων κώδικα κενού διαστήματος.
# This will remove "https://", because it can be formed from "/stph:".
>>> 'https://unicode.org/emoji/'.strip('/stph:')
'unicode.org/emoji'
# Removal of all whitespace from both ends of the str.
>>> ' 🐪🐪🐪🌟🐪🐪🐪 '.strip()
'🐪🐪🐪🌟🐪🐪🐪'
>>> justification = 'оправдание'
>>> justification.strip('еина')
'оправд'
# Prefix and suffix in one step.
>>> 'unaddressed'.strip('dnue')
'address'
>>> ' unaddressed '.strip('dnue ')
'address'
<str>.replace(<substring>, <replacement substring>) επιστρέφει ένα αντίγραφο της συμβολοσειράς με όλες τις εμφανίσεις του <substring> αντικατεστημένες από το <replacement substring>.
Το απόσπασμα που χρησιμοποιείται παρακάτω είναι από το The Hunting of the Snark του Lewis Carroll
# The Hunting of the Snark, by Lewis Carroll
>>> quote = '''
"Just the place for a Snark!" the Bellman cried,
As he landed his crew with care;
Supporting each man on the top of the tide
By a finger entwined in his hair.
"Just the place for a Snark! I have said it twice:
That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
What I tell you three times is true."
'''
>>> quote.replace('Snark', '🐲')
...
'\n"Just the place for a 🐲!" the Bellman cried,\n As he landed his crew with care;\nSupporting each man on the top of the tide\n By a finger entwined in his hair.\n\n"Just the place for a 🐲! I have said it twice:\n That alone should encourage the crew.\nJust the place for a 🐲! I have said it thrice:\n What I tell you three times is true."\n'
>>> 'bookkeeper'.replace('kk', 'k k')
'book keeper'
Σε αυτή την άσκηση βοηθάς τη μικρότερη αδερφή σου να επιμεληθεί την έκθεσή της για το σχολείο. Ο δάσκαλος ψάχνει για σωστή στίξη, γραμματική και εξαιρετική επιλογή λέξεων.
Έχεις τέσσερις εργασίες για να καθαρίσεις και να τροποποιήσεις συμβολοσειρές.
Κάθε καλή έκθεση χρειάζεται έναν σωστά μορφοποιημένο τίτλο.
Υλοποίησε τη συνάρτηση capitalize_title(<title>), η οποία παίρνει ως παράμετρο έναν τίτλο str και κάνει κεφαλαίο το πρώτο γράμμα κάθε λέξης.
Η συνάρτηση θα πρέπει να επιστρέφει μια str σε μορφή τίτλου.
>>> capitalize_title("my hobbies")
"My Hobbies"
Θέλεις να σιγουρευτείς ότι η στίξη στην έκθεση είναι άψογη.
Υλοποίησε τη συνάρτηση check_sentence_ending(), η οποία παίρνει ως παράμετρο το sentence. Η συνάρτηση θα πρέπει να επιστρέφει ένα bool.
>>> check_sentence_ending("I like to hike, bake, and read.")
True
Για να δείχνει η έκθεση επαγγελματική, πρέπει να αφαιρεθούν τα περιττά κενά.
Υλοποίησε τη συνάρτηση clean_up_spacing(), η οποία παίρνει ως παράμετρο το sentence.
Η συνάρτηση θα πρέπει να αφαιρεί τα επιπλέον κενά τόσο στην αρχή όσο και στο τέλος της πρότασης και να επιστρέφει μια νέα, ενημερωμένη πρόταση str.
>>> clean_up_spacing(" I like to go on hikes with my dog. ")
"I like to go on hikes with my dog."
Για να κάνεις την έκθεση ακόμη καλύτερη, μπορείς να αντικαταστήσεις μερικά από τα επίθετα με συνώνυμά τους.
Γράψε τη συνάρτηση replace_word_choice(), η οποία παίρνει ως παραμέτρους τα sentence, old_word και new_word.
Η συνάρτηση θα πρέπει να αντικαθιστά κάθε εμφάνιση του old_word με το new_word και να επιστρέφει μια νέα str με την ενημερωμένη πρόταση.
>>> replace_word_choice("I bake good cakes.", "good", "amazing")
"I bake amazing cakes."
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.