Πώς να αντικαταστήσετε έναν χαρακτήρα σε μια συμβολοσειρά χρησιμοποιώντας Python

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

Οι συμβολοσειρές στην Python είναι ενσωματωμένες δομές δεδομένων που αποθηκεύουν μια ακολουθία χαρακτήρων Unicode. Σε αντίθεση με ορισμένες δομές δεδομένων Python, όπως λίστες και λεξικά, οι συμβολοσειρές είναι αμετάβλητες. Αυτό σημαίνει ότι δεν μπορείτε να τροποποιήσετε μια υπάρχουσα συμβολοσειρά.

Ωστόσο, μπορεί να θέλετε να χειριστείτε τις συμβολοσειρές—να αφαιρέσετε τα κύρια και τελικά λευκά κενά, να αλλάξετε τη χρήση κεφαλαίων, να αντικαταστήσετε έναν χαρακτήρα με έναν άλλο και πολλά άλλα—όταν εργάζεστε με αυτές.

Λοιπόν, πώς χειριζόμαστε τις συμβολοσειρές Python; Και πώς αντικαθιστούμε έναν χαρακτήρα σε μια συμβολοσειρά Python; Θα απαντήσουμε σε αυτές τις ερωτήσεις σε αυτό το σεμινάριο εστιάζοντας στα εξής:

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

Ας αρχίσουμε…

Αμετάβλητο των χορδών Python

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

Για παράδειγμα, σκεφτείτε τη συμβολοσειρά “Προγραμματισμός Python!”.

Μπορείτε να αποκτήσετε πρόσβαση σε ένα μεμονωμένο στοιχείο της συμβολοσειράς χρησιμοποιώντας το ευρετήριο και μια δευτερεύουσα συμβολοσειρά, καθορίζοντας το slice με την αρχή και το τέλος, όπως φαίνεται:

>>> my_str = "Python programming!"
>>> my_str[0]
'P'
>>> my_str[4]
'o'
>>> my_str[1:9]
'ython pr'
>>> my_str[9]
'o'

Ας υποθέσουμε ότι θέλετε να αντικαταστήσετε το γράμμα “o” με το ψηφίο “0”.

Γνωρίζετε ότι έχετε ένα o στους δείκτες 4 και 9 (δείτε το απόσπασμα κώδικα παραπάνω). Αλλά αν προσπαθήσετε να ορίσετε απευθείας τον χαρακτήρα—στο συγκεκριμένο ευρετήριο—στο ‘0’, θα λάβετε το ακόλουθο σφάλμα:

>>> my_str[4] = '0'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

Η Python παρέχει ένα σύνολο μεθόδων συμβολοσειράς που δρουν σε μια υπάρχουσα συμβολοσειρά και επιστρέφουν μια νέα συμβολοσειρά με τις απαιτούμενες αλλαγές.

Διαβάστε επίσης: Προγράμματα Python σε λειτουργίες συμβολοσειράς.

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

  10 τρόποι για να διορθώσετε το σφάλμα Spotify Unable to Login

Αντικατάσταση χαρακτήρα σε συμβολοσειρές Python

Υπάρχουν πολλές περιπτώσεις χρήσης στις οποίες μπορεί να θέλετε να αντικαταστήσετε χαρακτήρες ή υποσυμβολοσειρές σε μια συμβολοσειρά Python. Εδώ είναι μερικά από αυτά:

  • Καθαρισμός κειμένου: Όταν εργάζεστε με δεδομένα κειμένου, μπορεί να χρειαστεί να καθαρίσετε το κείμενο αντικαθιστώντας ορισμένους χαρακτήρες. Για παράδειγμα, κατάργηση ή αντικατάσταση ειδικών χαρακτήρων, επιπλέον λευκού χώρου ή ανεπιθύμητων συμβόλων.
  • Μορφοποίηση: Ίσως θέλετε να αλλάξετε τη μορφοποίηση του κειμένου, όπως κεφαλαία ή μετατροπή κειμένου σε πεζά. Για παράδειγμα, διασφαλίζοντας συνεπή χρήση κεφαλαίων σε τίτλους ή επικεφαλίδες.
  • Απόκρυψη δεδομένων: Συχνά θα πρέπει να καλύπτετε ευαίσθητες πληροφορίες, όπως προσωπικούς αριθμούς αναγνώρισης ή αριθμούς πιστωτικών καρτών, για να προστατεύσετε ευαίσθητα δεδομένα, διατηρώντας παράλληλα τη μορφή.
  • Διευθύνσεις URL και χειρισμός διαδρομής: Όταν εργάζεστε με διευθύνσεις URL ή διαδρομές αρχείων, μπορεί να χρειαστεί να αντικαταστήσετε ορισμένους χαρακτήρες για να διασφαλίσετε ότι είναι σωστά μορφοποιημένοι και συμβατοί με προγράμματα περιήγησης ιστού ή συστήματα αρχείων.

Θα πάρουμε ένα απλό παράδειγμα αντικατάστασης ενός χαρακτήρα σε μια συμβολοσειρά.

Θα ξεκινήσουμε με μια προσέγγιση που χρησιμοποιεί βρόχους και εντολές υπό όρους και στη συνέχεια θα προχωρήσουμε στη συζήτηση άλλων καλύτερων μεθόδων για να πετύχουμε το ίδιο.

Ας πάρουμε το ίδιο παράδειγμα αντικατάστασης του «o» με το «0» στη συμβολοσειρά «Προγραμματισμός Python!».

Δείτε πώς μπορούμε να κάνουμε βρόχο στη συμβολοσειρά χρησιμοποιώντας έναν βρόχο for και να αντικαταστήσουμε τον συγκεκριμένο χαρακτήρα:

original_string = "Python programming!"
new_string = ""
for char in original_string:
    if char == "o":
        new_string += "0"
    else:
        new_string += char
print(new_string)  

Σε αυτήν την προσέγγιση, πραγματοποιούμε με μη αυτόματο βρόχο κάθε χαρακτήρα στο original_string. Εάν ο χαρακτήρας είναι ‘o’, προσθέτουμε το ‘0’ στο new_string. Διαφορετικά, προσθέτουμε τον ίδιο χαρακτήρα. Με αυτόν τον τρόπο, πραγματοποιούμε αντικατάσταση χαρακτήρων και χτίζουμε το new_string.

# Output
Pyth0n pr0gramming!

Η χρήση για βρόχο και διακλάδωση υπό όρους με τις εντολές if είναι δύσκολο να διατηρηθεί. Ειδικά όταν πρέπει να αντικαταστήσετε μια υποσυμβολοσειρά ή πολλούς χαρακτήρες.

Υπάρχουν καλύτερες προσεγγίσεις για την αντικατάσταση χαρακτήρων ή υποσυμβολοσειράς και θα τις εξετάσουμε στις επόμενες ενότητες.

#1. Χρησιμοποιώντας το str.replace()

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

Εδώ χρησιμοποιούμε το γράμμα “o” της μεθόδου replace() με το ψηφίο “0” στο original_string.

original_string = "Python programming!"
new_string = original_string.replace("o", "0")
print(new_string) 

Η συμβολοσειρά που προκύπτει είναι στο new_string.

# Output
Pyth0n pr0gramming!

#2. Χρησιμοποιώντας την κατανόηση καταλόγου και τη μέθοδο join().

Για να αντικαταστήσουμε έναν χαρακτήρα σε μια συμβολοσειρά Python, μπορούμε να χρησιμοποιήσουμε την κατανόηση λίστας σε συνδυασμό με τη μέθοδο string join().

  6 τρόποι για να χρησιμοποιήσετε το Amazon Echo για να κοιμηθείτε τα παιδιά σας

Ας δούμε πώς μπορούμε να ξαναγράψουμε το παράδειγμά μας:

  • Μπορούμε να χρησιμοποιήσουμε μια κατανόηση λίστας για να επαναλάβουμε κάθε χαρακτήρα στο original_string. Εάν ο χαρακτήρας είναι ‘o’, τον αντικαθιστούμε με ‘0’ και διατηρούμε τον ίδιο χαρακτήρα διαφορετικά.
  • Στη συνέχεια, χρησιμοποιούμε τη str.join() για να συνδυάσουμε αυτούς τους χαρακτήρες σε μια ενιαία συμβολοσειρά, καταλήγοντας σε new_string. Σημειώστε ότι αυτή είναι μια πιο συνοπτική εναλλακτική λύση στη διακλάδωση βρόχου και υπό όρους όταν πρέπει να αντικαταστήσετε έναν μεμονωμένο χαρακτήρα σε μια συμβολοσειρά.
original_string = "Python programming!"
new_string = ''.join(['0' if char == 'o' else char for char in original_string])
print(new_string) 

Παίρνουμε το αναμενόμενο αποτέλεσμα:

# Output
Pyth0n pr0gramming!

#3. Χρήση κανονικών εκφράσεων

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

Εδώ, χρησιμοποιούμε τη συνάρτηση sub() από τη μονάδα re με τη σύνταξη re.sub (μοτίβο, αντικατάσταση, συμβολοσειρά).

import re

original_string = "Python programming!"
new_string = re.sub(r'o', '0', original_string)
print(new_string) 

Το μοτίβο r’o’ ταιριάζει με όλες τις εμφανίσεις του γράμματος ‘o’ στο original_string και τις αντικαθιστά με το ‘0’.

# Output
Pyth0n pr0gramming!

Μπορείτε να χρησιμοποιήσετε κανονικές εκφράσεις για να ταιριάξετε πιο περίπλοκα μοτίβα. Ας πάρουμε το παράδειγμα της απόκρυψης αριθμών πιστωτικών καρτών. Ας υποθέσουμε ότι θέλουμε να αντικαταστήσουμε όλους τους αριθμούς—εκτός από τα τέσσερα τελευταία ψηφία—με ένα «Χ». Δείτε πώς μπορούμε να το κάνουμε:

import re

def mask_credit_card(card_number):
    # Use regular expressions to match and replace characters
    masked_number = re.sub(r'\d(?=\d{4})', 'X', card_number)
    return masked_number

# Example usage:
credit_card_number = "1234567898765432"
masked_number = mask_credit_card(credit_card_number)
print(masked_number)

Και εδώ είναι η έξοδος:

# Output
XXXXXXXXXXXX5432

Για να διατηρήσουμε το regex απλό, δεν έχουμε συμπεριλάβει την παύλα, αλλά αν θέλετε, μπορείτε να τροποποιήσετε το παράδειγμα όπως χρειάζεται.

#4. Χρησιμοποιώντας str.maketrans() και str.translate()

Οι μέθοδοι str.maketrans() και str.translate() στην Python χρησιμοποιούνται για την εκτέλεση μετάφρασης και αντικατάστασης σε επίπεδο χαρακτήρων σε συμβολοσειρές.

Πώς λειτουργεί το str.maketrans().

Η μέθοδος maketrans() χρησιμοποιείται για τη δημιουργία ενός πίνακα μετάφρασης που καθορίζει τον τρόπο αντικατάστασης των χαρακτήρων σε μια συμβολοσειρά. Μπορείτε να το χρησιμοποιήσετε με τη σύνταξη: str.maketrans(x, y). Εδώ:

  • x είναι η συμβολοσειρά που περιέχει χαρακτήρες που θέλετε να αντικαταστήσετε.
  • Το y είναι η συμβολοσειρά που περιέχει χαρακτήρες με τους οποίους θέλετε να αντικαταστήσετε το x.
  11 καλύτερα πληκτρολόγια παιχνιδιού για ρευστό και αποκριτικό παιχνίδι

Η μέθοδος maketrans() δημιουργεί έναν πίνακα μετάφρασης με βάση τις αντιστοιχίσεις από το x στο y. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε αυτόν τον πίνακα μετάφρασης με τη μέθοδο str.translate() για να εκτελέσετε την πραγματική αντικατάσταση.

Πώς λειτουργεί η str.translate().

Μπορείτε να χρησιμοποιήσετε τη μέθοδο str.translate() για να εφαρμόσετε τον πίνακα μετάφρασης που δημιουργήθηκε από τη str.maketrans() σε μια συμβολοσειρά. Εκτελεί αντικατάσταση χαρακτήρα προς χαρακτήρα με βάση τις αντιστοιχίσεις που ορίζονται στον πίνακα μετάφρασης. Και επιστρέφει μια νέα συμβολοσειρά με τις καθορισμένες αντικαταστάσεις χαρακτήρων.

Δείτε πώς μπορείτε να χρησιμοποιήσετε τη μέθοδο translate():

new_string = original_string.translate(translation_table)
  • original_string: Η συμβολοσειρά εισόδου που θέλετε να τροποποιήσετε.
  • translation_table: Ο πίνακας μετάφρασης που δημιουργήθηκε χρησιμοποιώντας τη str.maketrans() που ορίζει τις αντιστοιχίσεις χαρακτήρων.

Συνδυάζοντας και τις δύο μεθόδους maketrans() και str.translate(), ας ξαναγράψουμε το παράδειγμά μας ως εξής:

original_string = "Python programming!"
translation_table = str.maketrans('o', '0')
new_string = original_string.translate(translation_table)
print(new_string)

Εδώ, δημιουργούμε έναν πίνακα μετάφρασης χρησιμοποιώντας το str.maketrans(‘o’, ‘0’) για να καθορίσουμε ότι το ‘o’ πρέπει να αντικατασταθεί από το ‘0’. Στη συνέχεια χρησιμοποιούμε τη μέθοδο translate() στο original_string για να εφαρμόσουμε αυτήν τη μετάφραση, με αποτέλεσμα το new_string.

# Output
Pyth0n pr0gramming!

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

συμπέρασμα

Ας αναθεωρήσουμε τι μάθαμε.

Οι συμβολοσειρές Python είναι αμετάβλητες. Έτσι, όταν θέλετε να αντικαταστήσετε έναν χαρακτήρα σε μια συμβολοσειρά Python, δεν μπορείτε απλώς να εκχωρήσετε ξανά τον χαρακτήρα σε ένα συγκεκριμένο ευρετήριο. Ακολουθήσαμε τις ακόλουθες προσεγγίσεις για να αντικαταστήσουμε έναν χαρακτήρα ή πολλούς χαρακτήρες σε μια συμβολοσειρά Python:

  • Χρησιμοποιήστε το str.replace(παλιό, νέο) για να αντικαταστήσετε όλες τις εμφανίσεις του παλιού με νέα υποσυμβολοσειρά.
  • Μπορείτε επίσης να χρησιμοποιήσετε την κατανόηση λίστας και τη μέθοδο join(). Χρησιμοποιήστε την κατανόηση λίστας για να επιτύχετε αντικατάσταση χαρακτήρων και τη μέθοδο join() για να ενώσετε τη λίστα χαρακτήρων σε μια συμβολοσειρά.
  • Μπορείτε να χρησιμοποιήσετε την αντιστοίχιση μοτίβων με κανονικές εκφράσεις για να αντικαταστήσετε τις εμφανίσεις ενός χαρακτήρα ή ενός μοτίβου. Χρησιμοποιήστε τη συνάρτηση sub() με re.sub (μοτίβο, αντικατάσταση, συμβολοσειρά).
  • Χρησιμοποιήστε τη str.maketrans() για να λάβετε έναν πίνακα μετάφρασης και τη μέθοδο translate() για να εφαρμόσετε τον πίνακα μετάφρασης στην αρχική συμβολοσειρά.

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