Ao dividir uma cadeia separada por vírgula numa lista em Python, se não houver espaços no meio, apenas a divisão() funcionará. Se houver espaços, é útil combiná-lo com strip() para remover os espaços extra. Além disso, utilizar a notação de compreensão de lista é uma forma inteligente de escrever.
Nesta secção, começamos por explicar o seguinte.
- Dividir um fio com um delimitador especificado e devolvê-lo como uma lista
split()
- Remover caracteres extra do início e do fim de uma corda.
strip()
- Notação de compreensão de lista para aplicar funções e métodos para listar elementos.
Mostra também como fazer uma lista de cordas separadas por espaços e vírgulas através da remoção de espaços, como se mostra abaixo.'one, two, three'
Além disso, iremos discutir o seguinte
- Como obtê-lo como uma lista de números
- Como usar o join() para se juntar a uma lista e torná-la novamente uma cadeia
- split(): Dividir um fio com um delimitador especificado e devolvê-lo como uma lista
- strip(): Remover caracteres extra do início e do fim de uma corda.
- Notação de compreensão da lista: aplicar funções e métodos para listar elementos
- Obter como uma lista de números
- join(): Fundir uma lista e obtê-la como um fio
split(): Dividir um fio com um delimitador especificado e devolvê-lo como uma lista
Usando o método split() para cordas, é possível dividir uma corda com um delimitador especificado e obtê-lo como uma lista (array). O delimitador especificado pode ser especificado através do seguinte argumento.sep
Se o argumento sep for omitido e não for especificado nenhum delimitador, divide-se a cadeia por espaços e devolve-se uma lista. Os espaços consecutivos e separadores também dividem a lista, por isso, se quiser fazer uma lista de cadeias de caracteres delimitadas por separadores, pode usar split() sem 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 um delimitador for especificado no argumento sep, ele divide a lista por essa cadeia e devolve uma lista.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
No caso de uma corda separada por vírgula, se não houver espaço branco extra, não há problema, mas se correr dividida() com uma vírgula como delimitador de uma corda separada por uma vírgula + espaço branco, terminará com uma lista de cordas com espaço branco deixado no início.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
Pode usar uma vírgula + espaço como delimitador como se segue, mas não funcionará se o número de espaços na corda original for 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']
A faixa do método de cordel(), que será explicada a seguir, pode ser utilizada para lidar com dois espaços.
strip(): Remover caracteres extra do início e do fim de uma corda.
strip() é um método para remover caracteres extra do início e do fim de uma corda.
Se o argumento for omitido, uma nova cadeia é devolvida com os caracteres do espaço em branco removidos. A corda original em si não é alterada.
s = ' one ' print(s.strip()) # one print(s) # one
Se uma corda for especificada como argumento, os caracteres contidos na corda serão removidos.
s = '-+-one-+-' print(s.strip('-+')) # one
Neste caso, os espaços não são removidos. Portanto, se quiser remover também espaços em branco, passe um fio incluindo espaços como argumento, como se mostra abaixo.'-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
A tira() manipula ambas as extremidades, mas as seguintes funções também estão disponíveis.
lstrip()
:Processar apenas o iníciorstrip()
:Processar apenas o fim da linha.
Notação de compreensão da lista: aplicar funções e métodos para listar elementos
Se quiser aplicar uma função ou método aos elementos de uma lista, é inteligente utilizar a notação de compreensão da lista em vez da notação de para loop, se quiser obter a lista no final.
- Artigos relacionados:Usando a notação Python list comprehensions
Aqui, aplicamos a faixa() à lista obtida através da divisão da cadeia com split(). O espaço extra em branco numa corda separada por vírgula contendo espaço em branco pode ser removido para fazer uma lista.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Quando isto é aplicado a uma cadeia vazia, pode ser obtida uma lista com uma única cadeia vazia como elemento.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Se quiser obter uma lista vazia para uma cadeia vazia, pode criar um ramo condicional na notação de compreensão da lista.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
'one, , three'
Além disso, se faltar um elemento separado por vírgula, como descrito acima, o primeiro método irá listá-lo como um elemento de corda vazia.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Se quiser ignorar as partes em falta, pode criar um ramo condicional na notação de compreensão 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 como uma lista de números
Se quiser obter uma cadeia de números separada por vírgula como uma lista de números em vez de uma cadeia, aplique int() ou float() para converter a cadeia para um número na notação de compreensão 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(): Fundir uma lista e obtê-la como um fio
No padrão oposto, se quiser juntar-se a uma lista e obter cordas separadas por um delimitador específico, utilize o método join().
É fácil cometer um erro, mas note-se que join() é um método de cadeia, não um método de lista. A lista é especificada como um 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
Pode escrevê-lo numa linha como se segue.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Se quiser apenas mudar um delimitador fixo, é mais fácil substituí-lo pelo método de substituição().
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three