Αν και οι συμβολοσειρές είναι αμετάβλητες στην Python, μπορείτε να δημιουργήσετε νέες συμβολοσειρές με βάση τις υπάρχουσες. Χρησιμοποιώντας διαφορετικές μεθόδους, μπορείτε να αφαιρέσετε ή να αντικαταστήσετε χαρακτήρες για να δημιουργήσετε τη συμβολοσειρά που θέλετε.

Τι σημαίνει αμεταβλητότητα;

Η αμεταβλητότητα σημαίνει ότι μόλις δημιουργηθεί ένα αντικείμενο, δεν μπορεί πλέον να αλλάξει. Στην Python, οι συμβολοσειρές είναι αμετάβλητες. Όταν αφαιρείτε χαρακτήρες από μια συμβολοσειρά χρησιμοποιώντας μεθόδους στην Python, ουσιαστικά δημιουργείτε μια νέα συμβολοσειρά με συγκεκριμένα στοιχεία της αρχικής. Η αρχική συμβολοσειρά παραμένει όμως αμετάβλητη. Η αμεταβλητότητα των συμβολοσειρών βοηθά στην αποτελεσματική διαχείριση της μνήμης και αποτρέπει απρόσμενα αποτελέσματα κατά τον χειρισμό συμβολοσειρών.

Πώς να αφαιρέσετε και να αντικαταστήσετε μεμονωμένους χαρακτήρες ή ένα σύνολο χαρακτήρων

Για να αφαιρέσετε συγκεκριμένους χαρακτήρες από μια συμβολοσειρά, μπορείτε να χρησιμοποιήσετε str.replace() ή re.sub() με μια κανονική έκφραση που αντιπροσωπεύει τους χαρακτήρες ή τα μοτίβα που θέλετε να αφαιρέσετε.

str.replace()

Η συνάρτηση str.replace() χρησιμοποιείται για την αφαίρεση τμημάτων ενός κειμένου και την αντικατάστασή τους με ένα υποστρώμα.

original_string = "Hello, Python#"
 
modified_string = original_string.replace('#', '!')
print(original_string)  # Output: Hello, Python#
print(modified_string)  # Output: Hello, Python!
Python

Στο παραπάνω παράδειγμα, η μέθοδος replace() αντικαθιστά τον χαρακτήρα «#» στο original_string με ένα θαυμαστικό «!».

re.sub()

Η συνάρτηση re.sub() ανήκει στο module re της Python. Με αυτή τη συνάρτηση, μπορείτε να αναζητήσετε κανονικές εκφράσεις σε συμβολοσειρές και να τις αντικαταστήσετε με άλλους χαρακτήρες.

import re
original_string = "Hello, World! @#$%^&*"
modified_string = re.sub(r'[@#$%^&*]', '', original_string)
print(original_string)  # Output: Hello, World! @#$%^&*
print(modified_string)  # Output: Hello, World!
Python

Το μοτίβο [@#$%^&*] είναι μια κανονική έκφραση που ταιριάζει με τους ειδικούς χαρακτήρες @, #, $, %, ^, &,*. Η συνάρτηση re.sub() αναζητά όλες τις αντιστοιχίες του μοτίβου στην αρχική συμβολοσειρά original_string και τις αντικαθιστά με μια κενή συμβολοσειρά ''. Στο παραπάνω παράδειγμα, αποθηκεύσαμε το αποτέλεσμα στη μεταβλητή modified_string και το εμφανίσαμε.

Πώς να αφαιρέσετε όλους τους χαρακτήρες εκτός από τα γράμματα

Μπορείτε να χρησιμοποιήσετε διάφορες μεθόδους για να αφαιρέσετε όλα τα γράμματα από μια συμβολοσειρά. Παρακάτω θα δούμε πώς να το κάνετε αυτό με τις ακόλουθες μεθόδους: isalpha(), filter() και re.sub().

re.sub()

import re
original_string = "Hello, 123 World! @#$%^&*"
modified_string = re.sub(r'[^a-zA-Z]', '', original_string)
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: HelloWorld
Python

Η κανονική έκφραση [^a-zA-Z] ταιριάζει με οποιονδήποτε χαρακτήρα που δεν είναι μικρό ή κεφαλαίο γράμμα. Ως αποτέλεσμα, modified_string αποτελείται μόνο από τα γράμματα της αρχικής συμβολοσειράς. Λάβετε υπόψη ότι αυτό αφαιρεί επίσης τα κενά μεταξύ των γραμμάτων.

isalpha()

original_string = "Hello, 123 World! @#$%^&*"
modified_string = ''.join(char for char in original_string if char.isalpha())
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: HelloWorld
Python

Σε αυτό το παράδειγμα, χρησιμοποιήσαμε μια λίστα κατανόησης για να επαναλάβουμε κάθε γράμμα στο original_string. Η μέθοδος isalpha() ελέγχει αν ένας χαρακτήρας είναι γράμμα. Τα γράμματα στη συνέχεια εισάγονται σε ένα νέο modified_string, ενώ όλοι οι άλλοι χαρακτήρες αγνοούνται.

filter()

original_string = "Hello, 123 World! @#$%^&*"
filtered_chars = filter(str.isalpha, original_string)
modified_string = ''.join(filtered_chars)
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: HelloWorld
Python

Η μέθοδος str.isalpha() επιστρέφει True αν ο χαρακτήρας είναι γράμμα, διαφορετικά επιστρέφει False. Η συνάρτηση filter() δημιουργεί ένα αντικείμενο φίλτρου που περιέχει μόνο τους χαρακτήρες που ικανοποιούν την str.isalpha() συνθήκη. Αυτό μας επιτρέπει να αφαιρέσουμε όλους τους χαρακτήρες στο original_string που δεν είναι γράμματα.

Πώς να αφαιρέσετε όλους τους χαρακτήρες εκτός από τους αριθμούς

Όπως και στα προηγούμενα παραδείγματα, μπορείτε να διαχωρίσετε τους αριθμούς χρησιμοποιώντας re.sub(), filter() και το αριθμητικό ισοδύναμο του isalpha(), isdigit().

re.sub()

import re
original_string = "Hello, 123 World! @#$%^&*"
modified_string = re.sub('[^0-9]', '', original_string)
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: 123
Python

Με 0-9, μπορούμε να ορίσουμε ένα εύρος που περιλαμβάνει όλους τους αριθμούς από το 0 έως το 9. Το παύλα - μεταξύ του 0 και του 9 λειτουργεί ως τελεστής εύρους. Το προηγούμενο ^ σημαίνει όλους τους χαρακτήρες που δεν βρίσκονται εντός του καθορισμένου εύρους από το 0 έως το 9. Αυτοί οι χαρακτήρες αντικαθίστανται από κενά χαρακτήρες χρησιμοποιώντας re.sub.

filter()

original_string = "Hello, 123 World! @#$%^&*"
filtered_chars = filter(str.isdigit, original_string)
modified_string = ''.join(filtered_chars)
print(original_string) # Output: Hello, 123 World! @#$%^&*
print(modified_string) # Output: 123
Python

Η συνάρτηση filter() σε συνδυασμό με isdigit() μπορεί να φιλτράρει αριθμούς από μια συμβολοσειρά και να αφαιρέσει τους υπόλοιπους χαρακτήρες. Χρησιμοποιώντας τις δύο αυτές συναρτήσεις μαζί, η νέα συμβολοσειρά μας δείχνει τους αριθμούς 123.

isdigit()

original_string = "Hello, 123 World"
modified_string = ''.join('*' if not char.isdigit() else char for char in original_string)
print(original_string) # Output: Hello, 123 World
print(modified_string) # Output: *******123******
Python

Μπορούμε επίσης να χρησιμοποιήσουμε τη μέθοδο isdigit() σε μια λίστα κατανόησης για να επαναλάβουμε κάθε char στο original_string. Οι χαρακτήρες που δεν είναι δεκαδικά ψηφία (not char.isdigit() είναι αληθές) θα αντικατασταθούν με έναν αστερίσκο *, διαφορετικά παραμένουν οι ίδιοι.

Πώς να αφαιρέσετε χαρακτήρες χρησιμοποιώντας translate()

Η μέθοδος translate() είναι μια ενσωματωμένη συνάρτηση της Python που χρησιμοποιείται για την προηγμένη αντικατάσταση και μετάφραση χαρακτήρων σε συμβολοσειρές. Παρέχει έναν αποτελεσματικό τρόπο αντικατάστασης χαρακτήρων χρησιμοποιώντας έναν πίνακα μεταφράσεων.

original_string = "Hello, World! Remove vowels."
translation_table = str.maketrans(dict.fromkeys('aeiouAEIOU', '*'))
modified_string = original_string.translate(translation_table)
print(original_string) # Output: Hello, World! Remove vowels.
print(modified_string) # Output: H*ll*, W*rld! R*m*v* v*w*ls.
Python

Στο παραπάνω παράδειγμα, χρησιμοποιήσαμε τον κατασκευαστή str.maketrans() και dict.fromkeys() για να δημιουργήσουμε τον πίνακα μετάφρασης. Αυτό καθορίζει ότι όλα τα φωνήεντα πρέπει να αντικατασταθούν από *. Ο πίνακας εφαρμόζεται στη συνέχεια στην αρχική συμβολοσειρά για να ληφθεί modified_string.

Go to Main Menu