Atunci când împărțiți un șir de caractere separate prin virgulă într-o listă în Python, dacă nu există spații între ele, va funcționa doar split(). În cazul în care există spații, este util să se combine cu strip() pentru a elimina spațiile suplimentare. În plus, utilizarea notației de înțelegere a listei este o modalitate inteligentă de a scrie.
În această secțiune, vom explica mai întâi următoarele.
- Împarte un șir de caractere cu un delimitator specificat și îl returnează sub formă de listă
split()
- Elimină caracterele suplimentare de la începutul și sfârșitul unui șir de caractere.
strip()
- Notația de înțelegere a listei pentru a aplica funcții și metode la elementele listei.
De asemenea, se arată cum se poate realiza o listă de șiruri de caractere separate prin spații și virgule prin eliminarea spațiilor, după cum se arată mai jos.'one, two, three'
În plus, vom discuta următoarele aspecte
- Cum se obține ca o listă de numere
- Cum se utilizează join() pentru a uni o listă și a o transforma din nou într-un șir de caractere
- split(): Împarte un șir de caractere cu un delimitator specificat și îl returnează sub formă de listă
- strip(): Elimină caracterele suplimentare de la începutul și sfârșitul unui șir de caractere.
- Notația de înțelegere a listelor: aplicarea de funcții și metode la elementele listei
- Obțineți ca o listă de numere
- join(): Combină o listă și obține-o sub formă de șir de caractere
split(): Împarte un șir de caractere cu un delimitator specificat și îl returnează sub formă de listă
Folosind metoda split() pentru șiruri de caractere, puteți diviza un șir de caractere cu un delimitator specificat și îl puteți obține sub formă de listă (matrice). Delimitatorul specificat poate fi precizat prin următorul argument.sep
În cazul în care argumentul sep este omis și nu este specificat niciun delimitator, acesta împarte șirul prin spații și returnează o listă. Spațiile și tabulatoarele consecutive vor diviza, de asemenea, lista, astfel încât, dacă doriți să creați o listă de șiruri delimitate de tabulație, puteți utiliza split() fără argument.
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']
În cazul în care se specifică un delimitator în argumentul sep, se împarte lista cu șirul respectiv și se returnează o listă.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
În cazul unui șir separat prin virgulă, dacă nu există spațiu alb suplimentar, nu există nicio problemă, dar dacă executați split() cu o virgulă ca delimitator pentru un șir separat prin virgulă + spațiu alb, veți obține o listă de șiruri cu spațiu alb lăsat la început.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
Puteți utiliza o virgulă + spațiu ca delimitator, după cum urmează, dar nu va funcționa dacă numărul de spații din șirul original este diferit.', '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
Metoda string strip(), care va fi explicată în continuare, poate fi utilizată pentru a trata două spații.
strip(): Elimină caracterele suplimentare de la începutul și sfârșitul unui șir de caractere.
strip() este o metodă de eliminare a caracterelor suplimentare de la începutul și sfârșitul unui șir de caractere.
În cazul în care argumentul este omis, se returnează un nou șir de caractere cu caracterele de spații albe eliminate. Șirul original nu este modificat.
s = ' one ' print(s.strip()) # one print(s) # one
În cazul în care se specifică un șir de caractere ca argument, caracterele conținute în șir vor fi eliminate.
s = '-+-one-+-' print(s.strip('-+')) # one
În acest caz, spațiile nu sunt eliminate. Prin urmare, dacă doriți să eliminați și spațiile albe, treceți ca argument un șir de caractere care să includă spații, așa cum se arată mai jos.'-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
strip() se ocupă de ambele capete, dar sunt disponibile și următoarele funcții.
lstrip()
:Procesul este doar începutulrstrip()
:Prelucrează numai capătul liniei.
Notația de înțelegere a listelor: aplicarea de funcții și metode la elementele listei
Dacă doriți să aplicați o funcție sau o metodă la elementele unei liste, este inteligent să utilizați notația de înțelegere a listei în locul buclei for dacă doriți să obțineți lista la sfârșit.
- Articole conexe:Utilizarea notației Python list comprehensions
Aici, aplicăm strip() la lista obținută prin divizarea șirului cu split(). Spațiul în plus dintr-un șir separat prin virgulă care conține spații albe poate fi eliminat pentru a obține o listă.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Când acest lucru este aplicat unui șir gol, se poate obține o listă cu un singur șir gol ca element.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Dacă doriți să obțineți o listă goală pentru un șir de caractere gol, puteți configura o ramură condițională în notația de înțelegere a listei.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
'one, , three'
De asemenea, în cazul în care lipsește un element separat prin virgulă, așa cum s-a descris mai sus, prima metodă îl va enumera ca un element de șir gol.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Dacă doriți să ignorați părțile care lipsesc, puteți stabili o ramificare condiționată în notația de înțelegere a listei.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
Obțineți ca o listă de numere
Dacă doriți să obțineți un șir de numere separate prin virgulă sub forma unei liste de numere în loc de un șir de caractere, aplicați int() sau float() pentru a converti șirul de caractere într-un număr în notația de înțelegere a listei.
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(): Combină o listă și obține-o sub formă de șir de caractere
În modelul opus, dacă doriți să alăturați o listă și să obțineți șiruri de caractere separate de un anumit delimitator, utilizați metoda join().
Este ușor să faceți o greșeală, dar rețineți că join() este o metodă de șir de caractere, nu o metodă de listă. Lista este specificată ca argument.
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
Îl puteți scrie într-o singură linie, după cum urmează.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Dacă doriți doar să modificați un delimitator fix, este mai ușor să îl înlocuiți cu metoda replace().
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three