Πώς να χρησιμοποιήσετε τη μέθοδο split() στην Python

Σε αυτό το σεμινάριο, θα μάθετε πώς να χρησιμοποιείτε τη μέθοδο split() της Python για να χωρίσετε μια συμβολοσειρά σε μια λίστα συμβολοσειρών.

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

Μέχρι το τέλος του σεμιναρίου, θα έχετε μάθει τα εξής:

  • πώς λειτουργεί η μέθοδος .split().
  • πώς να προσαρμόσετε τη διαίρεση χρησιμοποιώντας τις παραμέτρους sep και maxsplit

Ας ξεκινήσουμε!

Σύνταξη της μεθόδου split() στην Python

Ακολουθεί η γενική σύνταξη για τη χρήση της μεθόδου split() της Python σε οποιαδήποτε έγκυρη συμβολοσειρά:

string.split(sep, maxsplit)

# Parameters:
sep, maxsplit

# Returns:
A list of strings

Εδώ, η συμβολοσειρά μπορεί να είναι οποιαδήποτε έγκυρη συμβολοσειρά Python.

Και οι δύο παράμετροι sep και maxsplit είναι προαιρετικές.

  • sep υποδηλώνει το διαχωριστικό στο οποίο θέλετε να χωρίσετε τη συμβολοσειρά. Θα πρέπει να οριστεί ως συμβολοσειρά.
  • Το maxsplit είναι ένας ακέραιος που καθορίζει πόσες φορές θέλετε να χωρίσετε τη συμβολοσειρά.

Οι προεπιλεγμένες τιμές τους χρησιμοποιούνται όταν δεν παρέχετε προαιρετικές παραμέτρους.

  • Όταν δεν παρέχετε ρητά την τιμή sep, το κενό διάστημα χρησιμοποιείται ως το προεπιλεγμένο διαχωριστικό.
  • Όταν δεν καθορίζετε την τιμή για το maxsplit, ορίζεται από προεπιλογή -1, πράγμα που σημαίνει ότι η συμβολοσειρά θα χωριστεί σε όλες τις εμφανίσεις του διαχωριστικού.

Φράση της σύνταξης σε απλή γλώσσα:

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

  Τι είναι το "Jiggle Mode" στο iPhone και σε άλλες συσκευές Apple;

Τώρα που μάθαμε τη σύνταξη της μεθόδου Python split() ας προχωρήσουμε στην κωδικοποίηση ορισμένων παραδειγμάτων.

Διαχωρίστε μια συμβολοσειρά Python σε μια λίστα συμβολοσειρών

Εάν έχετε Python 3 εγκατεστημένο στον υπολογιστή σας, μπορείτε να κωδικοποιήσετε με αυτό το σεμινάριο εκτελώντας τα παρακάτω αποσπάσματα κώδικα σε ένα Python REPL.

Για να ξεκινήσετε το REPL, εκτελέστε μία από τις ακόλουθες εντολές από το τερματικό:

$ python
$ python -i

▶️ Μπορείτε επίσης να δοκιμάσετε αυτά τα παραδείγματα στον επεξεργαστή Python του grtechpc.org.

Σε αυτό το παράδειγμα, το py_str είναι μια συμβολοσειρά Python. Ας καλέσουμε τη μέθοδο .split() στο py_str χωρίς καμία παράμετρο και ας παρατηρήσουμε την έξοδο.

py_str = "Learn how to use split() in Python"
py_str.split()

# Output
['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']

Όπως φαίνεται παραπάνω, η συμβολοσειρά χωρίζεται σε όλες τις εμφανίσεις κενού διαστήματος.

Διαχωρίστε μια συμβολοσειρά Python για την εμφάνιση διαχωριστών

#1. Ως πρώτο παράδειγμα, ας χωρίσουμε τη συμβολοσειρά py_str με διπλές υπογραμμίσεις (__) ως διαχωριστικό.

py_str = "All__the__best"
py_str.split(sep='__')

# Output
['All', 'the', 'best']

#2. Ας πάρουμε ένα άλλο παράδειγμα. Εδώ, το py_str έχει τρεις προτάσεις, καθεμία από τις οποίες τερματίζεται με τελεία (.).

py_str = "I love coding. Python is cool. I'm learning Python in 2022"
py_str.split(sep='.')

# Output
['I love coding', ' Python is cool', " I'm learning Python in 2022"]

▶️ Όταν καλούμε τη μέθοδο .split() σε αυτήν τη συμβολοσειρά, με ‘.’ Ως διαχωριστικό, η λίστα που προκύπτει έχει τρεις προτάσεις, όπως φαίνεται στο παραπάνω κελί κώδικα.

#3. Ας κάνουμε μερικές ερωτήσεις:

  • Τι συμβαίνει όταν ο διαχωριστής δεν εμφανίζεται ποτέ στη συμβολοσειρά;
  • Πώς θα συμβεί η διάσπαση σε αυτή την περίπτωση;

Εδώ είναι ένα παράδειγμα:

Προσπαθούμε να χωρίσουμε το py_str στην εμφάνιση του αστερίσκου

py_str = "This line contains no asterisk."
py_str.split(sep='*')

# Output
['This line contains no asterisk.']

— το οποίο δεν συμβαίνει.

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

Στην επόμενη ενότητα, θα δούμε πώς μπορούμε να χρησιμοποιήσουμε τη μέθοδο split() στα περιεχόμενα ενός αρχείου κειμένου.

Διαχωρίστε τα περιεχόμενα ενός αρχείου Python

Όταν εργάζεστε με αρχεία κειμένου στην Python, ίσως χρειαστεί να διαχωρίσετε τα περιεχόμενα του αρχείου —με βάση ένα διαχωριστικό— για ευκολότερη επεξεργασία.

  Πώς να προσθέσετε έναν λογαριασμό Gmail στο Outlook

Ακολουθεί ένα δείγμα αρχείου κειμένου:

with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να χρησιμοποιήσετε το split στα περιεχόμενα του δείγματος αρχείου κειμένου.

  • Ο παραπάνω κώδικας κάνει τα εξής:
  • Χρησιμοποιεί το με τη διαχείριση περιβάλλοντος για να ανοίξει και να εργαστεί με το αρχείο κειμένου “sample.txt”.
  • Διαβάζει τα περιεχόμενα του αρχείου χρησιμοποιώντας τη μέθοδο .read() στο αντικείμενο αρχείου f.
  • Διαχωρίζει το περιεχόμενο σχετικά με την εμφάνιση της έλλειψης διαχωριστικού (…) σε μια λίστα str_list.

Κάνει βρόχο μέσω της str_list για πρόσβαση σε κάθε συμβολοσειρά και την εκτυπώνει.

# Output
This is a sample text file
It contains info on
Getting started with <a href="https://grtechpc.org.com/pcap-certification/">programming in Python</a>
According to the 2022 StackOverflow Developer Survey
Python is one of the most-loved programming languages
So what are you waiting for? Start learning!

Εδώ είναι η έξοδος.

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

Διαχωρίστε μια συμβολοσειρά Python σε κομμάτια

Όταν χωρίσετε μια χορδή μία φορά, θα πάρετε δύο κομμάτια. χωρίζοντάς το δύο φορές θα πάρουμε τρία.

📋 Γενικά, όταν χωρίζετε μια συμβολοσειρά K φορές, θα λαμβάνετε K + 1 κομμάτια.

Αυτό φαίνεται παρακάτω.

Πώς λειτουργεί η παράμετρος maxsplit (Εικόνα από τον συγγραφέα)

py_str = "Chunk#1  I'm a larger chunk, Chunk#2"
py_str.split(maxsplit=1)

# Output
['Chunk#1', "I'm a larger chunk, Chunk#2"]

#1. Ορίσαμε το maxsplit ίσο με 1. Δεν έχουμε καθορίσει διαχωριστικό, επομένως ο διαχωρισμός θα εμφανίζεται στα κενά από προεπιλογή.

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

py_str = "Chunk#1 Chunk#2 I'm one large Chunk#3, even though I contain whitespaces"
py_str.split(maxsplit=2)

# Output
['Chunk#1',
 'Chunk#2',
 "I'm one large Chunk#3, even though I contain whitespaces"]

#2. Ας αυξήσουμε την τιμή maxsplit στο 2 και ας παρατηρήσουμε πώς συμβαίνει η διαίρεση στο ακόλουθο παράδειγμα.

Όπως και στο προηγούμενο παράδειγμα, η τιμή maxsplit καθορίζει τον αριθμό των διαχωρισμών που έγιναν. Λαμβάνουμε τρία κομμάτια, χωρίσματα μετά την πρώτη και τη δεύτερη εμφάνιση του κενού χώρου.

#3. Τι συμβαίνει εάν ορίσετε το maxsplit σε μια τιμή μεγαλύτερη από τον αριθμό των εμφανίσεων του διαχωριστή;

py_str = "There, are, only, 4, commas"
py_str.split(maxsplit=8)

# Output
['There,', 'are,', 'only,', '4,', 'commas']

Στο παρακάτω κελί κώδικα, ορίσαμε το maxsplit στο 8 όταν η συμβολοσειρά περιέχει μόνο τέσσερα κόμματα.

  Πώς να προσαρμόσετε το Κέντρο Ελέγχου σε Mac

Εδώ, η μέθοδος split διαχωρίζει το py_str και στις τέσσερις εμφανίσεις ενός κόμματος. Ακόμα κι αν προσπαθήσετε να ορίσετε το maxsplit σε τιμή μικρότερη από -1, ας πούμε, -7, ο διαχωρισμός θα γίνει σε όλες τις εμφανίσεις του διαχωριστή.

Στη συνέχεια, ας συγκεντρώσουμε όλα όσα μάθαμε και ας χρησιμοποιήσουμε και τις δύο παραμέτρους maxsplit sep.

Διαχωρίστε μια συμβολοσειρά Python σε κομμάτια σε ένα διαχωριστικό

py_str = "Chunk#1, Chunk#2, I'm one large Chunk#3, even though I contain a ,"
py_str.split(sep = ',',maxsplit=2)

# Output
['Chunk#1', ' Chunk#2', " I'm one large Chunk#3, even though I contain a ,"]

#1. Ας υποθέσουμε ότι πρέπει να χωρίσουμε τη συμβολοσειρά py_str σε τρία κομμάτια στην εμφάνιση κόμματος (,). Για να γίνει αυτό, μπορούμε να ορίσουμε την τιμή sep σε ‘,’ και την τιμή maxsplit σε 2 στην κλήση της μεθόδου.

Όπως φαίνεται στην έξοδο, η διαίρεση συμβαίνει δύο φορές στις δύο πρώτες εμφανίσεις του διαχωριστή.

#2. Το διαχωριστικό sep δεν χρειάζεται πάντα να είναι ειδικός χαρακτήρας. Μπορεί να είναι μια ακολουθία ειδικών χαρακτήρων, όπως οι διπλές υπογραμμίσεις που χρησιμοποιήσαμε νωρίτερα, ή μπορεί ακόμη και να είναι μια υποσυμβολοσειρά.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=2)

# Output
['You need to ', ' data structures, ', ' algorithms, and learn more!']

Ας ορίσουμε τη συμβολοσειρά ‘learn’ ως όρισμα sep και ας δούμε πώς γίνεται ο διαχωρισμός για διάφορες τιμές του maxsplit. Εδώ, ορίσαμε το maxsplit σε 2.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=-1)

# Output
['You need to ', ' data structures, ', ' algorithms, and ', ' more!']

#3. Εάν θέλετε να διαιρέσετε το py_str σε όλες τις εμφανίσεις της συμβολοσειράς ‘learn’, μπορούμε να ονομάσουμε αυτήν τη μέθοδο .split() ορίζοντας sep = ‘learn’—χωρίς την παράμετρο maxsplit. Αυτό ισοδυναμεί με τη ρητή ρύθμιση της τιμής maxsplit σε -1, όπως φαίνεται στο κελί κώδικα παρακάτω.

Βλέπουμε ότι η διάσπαση συμβαίνει σε όλες τις εμφανίσεις της «μάθησης».

Τυλίγοντας

Ελπίζω να καταλάβατε τώρα πώς να χρησιμοποιήσετε τη μέθοδο .split() με συμβολοσειρές Python.

  • Ακολουθεί μια περίληψη αυτού του σεμιναρίου:
  • Η ενσωματωμένη μέθοδος .split() της Python χωρίζει μια συμβολοσειρά σε μια λίστα συμβολοσειρών.
  • Χρησιμοποιήστε τη string.split() για να χωρίσετε τη συμβολοσειρά σε όλες τις εμφανίσεις του προεπιλεγμένου διαχωριστικού, κενού χώρου.

Χρησιμοποιήστε το string.split(sep,maxsplit) για να διαιρέσετε το μέγιστο split της συμβολοσειράς πολλές φορές στην εμφάνιση του διαχωριστικού sep. Η λίστα που προκύπτει έχει maxsplit+1 στοιχεία.

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