Python, split για να χωρίσετε μια συμβολοσειρά διαχωρισμένη με κόμμα, να αφαιρέσετε τα κενά και να μετατρέψετε σε λίστα

Επιχείρηση

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

Σε αυτή την ενότητα, θα εξηγήσουμε πρώτα τα εξής.

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

Δείχνει επίσης πώς να δημιουργήσετε μια λίστα από συμβολοσειρές που χωρίζονται με κενά και κόμματα αφαιρώντας τα κενά, όπως φαίνεται παρακάτω.
'one, two, three'

Επιπλέον, θα συζητήσουμε τα εξής

  • Πώς να το λάβετε ως λίστα αριθμών
  • Πώς να χρησιμοποιήσετε την join() για να ενώσετε μια λίστα και να την ξανακάνετε συμβολοσειρά

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

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

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

s = 'one two three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one two        three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one\ttwo\tthree'
l = s.split()
print(l)
# ['one', 'two', 'three']

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

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

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

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

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

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

Η μέθοδος string strip(), η οποία θα εξηγηθεί στη συνέχεια, μπορεί να χρησιμοποιηθεί για την αντιμετώπιση δύο διαστημάτων.

strip(): Αφαίρεση επιπλέον χαρακτήρων από την αρχή και το τέλος μιας συμβολοσειράς.

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

Εάν το όρισμα παραλειφθεί, επιστρέφεται μια νέα συμβολοσειρά με την αφαίρεση των χαρακτήρων κενών. Η ίδια η αρχική συμβολοσειρά δεν αλλάζει.

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

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

s = '-+-one-+-'
print(s.strip('-+'))
# one

Στην περίπτωση αυτή, τα κενά δεν αφαιρούνται. Επομένως, αν θέλετε να αφαιρέσετε και τα κενά διαστήματα, δώστε ως όρισμα μια συμβολοσειρά που περιλαμβάνει κενά, όπως φαίνεται παρακάτω.'-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

Η strip() χειρίζεται και τα δύο άκρα, αλλά οι ακόλουθες συναρτήσεις είναι επίσης διαθέσιμες.

  • lstrip():Η διαδικασία είναι μόνο η αρχή
  • rstrip():Επεξεργάζεται μόνο το τέλος της γραμμής.

Συμβολισμός κατανόησης λίστας: εφαρμογή συναρτήσεων και μεθόδων σε στοιχεία λίστας

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

Εδώ, εφαρμόζουμε την strip() στη λίστα που προκύπτει από τη διάσπαση της συμβολοσειράς με την split(). Το επιπλέον κενό διάστημα σε μια συμβολοσειρά που περιέχει κενό διάστημα και διαχωρίζεται με κόμμα μπορεί να αφαιρεθεί για να δημιουργηθεί μια λίστα.

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

Όταν αυτό εφαρμόζεται σε ένα κενό αλφαριθμητικό, μπορεί να προκύψει μια λίστα με ένα μόνο κενό αλφαριθμητικό ως στοιχείο.

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

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

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

'one, , three'
Επίσης, εάν λείπει ένα στοιχείο που διαχωρίζεται με κόμμα, όπως περιγράφεται παραπάνω, η πρώτη μέθοδος θα το καταγράψει ως κενό στοιχείο συμβολοσειράς.

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

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

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

Λήψη ως λίστα αριθμών

Αν θέλετε να λάβετε μια συμβολοσειρά αριθμών διαχωρισμένη με κόμμα ως λίστα αριθμών αντί για συμβολοσειρά, εφαρμόστε την int() ή την float() για να μετατρέψετε τη συμβολοσειρά σε αριθμό σε συμβολισμό κατανόησης λίστας.

s = '1, 2, 3, 4'
l = [x.strip() for x in s.split(',')]
print(l)
print(type(l[0]))
# ['1', '2', '3', '4']
# <class 'str'>

s = '1, 2, 3, 4'
l = [int(x.strip()) for x in s.split(',')]
print(l)
print(type(l[0]))
# [1, 2, 3, 4]
# <class 'int'>

join(): Συγχώνευση μιας λίστας και λήψη της ως συμβολοσειρά

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

Είναι εύκολο να κάνετε λάθος, αλλά σημειώστε ότι η join() είναι μια μέθοδος συμβολοσειρών και όχι μια μέθοδος λίστας. Η λίστα καθορίζεται ως όρισμα.

s = 'one, two,  three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

print(','.join(l))
# one,two,three

print('::'.join(l))
# one::two::three

Μπορείτε να το γράψετε σε μία γραμμή ως εξής.

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

Αν θέλετε απλώς να αλλάξετε ένα σταθερό διαχωριστικό, είναι ευκολότερο να το αντικαταστήσετε με τη μέθοδο replace().

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three
Copied title and URL