Ao dividir unha cadea separada por comas nunha lista en Python, se non hai espazos no medio, só funcionará split(). Se hai espazos, é útil combinalo con strip() para eliminar os espazos adicionais. Ademais, usar a notación de comprensión da lista é unha forma intelixente de escribir.
Nesta sección, primeiro explicamos o seguinte.
- Divide unha cadea cun delimitador especificado e devólvea como unha lista
split()
- Elimina os caracteres adicionais do comezo e do final dunha cadea.
strip()
- Notación de comprensión de listas para aplicar funcións e métodos a elementos da lista.
Tamén mostra como facer unha lista de cadeas separadas por espazos e comas eliminando espazos, como se mostra a continuación.one, two, three'
Ademais, comentaremos o seguinte
- Como obtelo como unha lista de números
- Como usar join() para unirse a unha lista e convertela nunha cadea de novo
- split():Divide unha cadea cun delimitador especificado e devólvea como unha lista
- strip():Elimina os caracteres adicionais do comezo e do final dunha cadea.
- Notación de comprensión de listas: aplica funcións e métodos aos elementos da lista
- Obter unha lista de números
- join():Combina unha lista e obteo como unha cadea
split():Divide unha cadea cun delimitador especificado e devólvea como unha lista
Usando o método split() para cadeas, pode dividir unha cadea cun delimitador especificado e obtelo como unha lista (matriz). O delimitador especificado pódese especificar co seguinte argumento.sep
Se o argumento sep se omite e non se especifica ningún delimitador, divídese a cadea por espazos e devolve unha lista. Os espazos e tabulacións consecutivos tamén dividirán a lista, polo que se queres facer unha lista de cadeas delimitadas por tabulacións, podes usar split() sen o argumento.
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']
Se se especifica un delimitador no argumento sep, divide a lista por esa cadea e devolve unha lista.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
No caso dunha cadea separada por comas, se non hai espazo en branco adicional, non hai problema, pero se executas split() cunha coma como delimitador dunha cadea separada por coma + espazo en branco, rematarás. arriba cunha lista de cadeas con espazo en branco ao principio.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
Podes usar coma + espazo como delimitador do seguinte xeito, pero non funcionará se o número de espazos na cadea orixinal é diferente., '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
O método de cadea strip(), que se explicará a continuación, pódese usar para tratar con dous espazos.
strip():Elimina os caracteres adicionais do comezo e do final dunha cadea.
strip() é un método para eliminar caracteres adicionais do comezo e do final dunha cadea.
Se o argumento se omite, devólvese unha nova cadea cos espazos en branco eliminados. A cadea orixinal non se modifica.
s = ' one ' print(s.strip()) # one print(s) # one
Se se especifica unha cadea como argumento, eliminaranse os caracteres contidos na cadea.
s = '-+-one-+-' print(s.strip('-+')) # one
Neste caso, non se eliminan espazos. Polo tanto, se tamén quere eliminar espazos en branco, pase unha cadea que inclúa espazos como argumento, como se mostra a continuación.-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
strip() xestiona os dous extremos, pero tamén están dispoñibles as seguintes funcións.
lstrip()
:Procesar só o principiorstrip()
:Procesa só o final da liña.
Notación de comprensión de listas: aplica funcións e métodos aos elementos da lista
Se queres aplicar unha función ou un método aos elementos dunha lista, é intelixente usar a notación de comprensión da lista en lugar do bucle for se queres obter a lista ao final.
- Artigos relacionados:Usando a notación de comprensións de listas de Python
Aquí, aplicamos strip() á lista obtida dividindo a cadea con split(). O espazo en branco adicional nunha cadea separada por comas que contén espazos en branco pódese eliminar para facer unha lista.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Cando se aplica a unha cadea baleira, pódese obter unha lista cunha única cadea baleira como elemento.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Se queres obter unha lista baleira para unha cadea baleira, podes configurar unha rama condicional na notación de comprensión da lista.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
one, , three'
Ademais, se falta un elemento separado por comas, como se describiu anteriormente, o primeiro método listarao como un elemento de cadea baleiro.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Se queres ignorar as partes que faltan, podes configurar unha rama condicional na notación de comprensión da lista.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
Obter unha lista de números
Se queres obter unha cadea de números separados por comas como unha lista de números en lugar dunha cadea, aplica int() ou float() para converter a cadea nun número na notación de comprensión da lista.
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():Combina unha lista e obteo como unha cadea
No patrón oposto, se quere unirse a unha lista e obter cadeas separadas por un delimitador específico, use o método join().
É fácil cometer un erro, pero teña en conta que join() é un método de cadea, non un método de lista. A lista especifícase como argumento.
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
Podes escribilo nunha liña do seguinte xeito.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Se só quere cambiar un delimitador fixo, é máis fácil substituílo polo método substituír().
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three