Segue-se uma descrição de como concatenar e juntar cordelinhos em Python.
- Concatenação e fusão de múltiplas cordas:
+
,+=
operador - Concatenar e combinar números e cordas:
+
,+=
operador,str()
,format()
,f-string - Concatenar e combinar listas (matrizes) de cordas numa única corda:
join()
- Concatenar e combinar listas (matrizes) de números numa única cadeia:
join()
,str()
Concatenação e fusão de múltiplas cordas: +, +=operador
ligação: +operador
O operador ++ pode ser utilizado para concatenar as seguintes literais e variáveis de corda
- '…'
- “…”
s = 'aaa' + 'bbb' + 'ccc'
print(s)
# aaabbbccc
s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'
s = s1 + s2 + s3
print(s)
# aaabbbccc
s = s1 + s2 + s3 + 'ddd'
print(s)
# aaabbbcccddd
ligação: +=operador
O operador +=, um operador de atribuição cumulativa, também pode ser utilizado. A variável string do lado esquerdo é concatenada com a string do lado direito, e é atribuída e actualizada.
s1 += s2
print(s1)
# aaabbb
Se quiser adicionar uma string ao fim de uma variável string, basta processar a variável string e qualquer string literal (ou outra variável string) com o operador +=.
s = 'aaa'
s += 'xxx'
print(s)
# aaaxxx
Concatenação consecutiva de literais de cordas
Se simplesmente escrever literalmente a corda lado a lado, a corda literal será concatenada.
s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc
É aceitável ter um espaço entre duas linhas ou uma quebra de linha (considerada uma continuação).
s = 'aaa' 'bbb' 'ccc'
print(s)
# aaabbbccc
s = 'aaa'\
'bbb'\
'ccc'
print(s)
# aaabbbccc
Há uma técnica para utilizar isto para escrever longas cordas em múltiplas linhas no código.
- Artigos relacionados:Escrever longas cordas em várias linhas em Python
Este método de escrita não é possível para variáveis de cadeia.
# s = s1 s2 s3
# SyntaxError: invalid syntax
Concatenação numérica e de cordas\concatenação: +,+=operador,str(),format(),f-string
Uma operação + de um tipo diferente resulta num erro.
s1 = 'aaa'
s2 = 'bbb'
i = 100
f = 0.25
# s = s1 + i
# TypeError: must be str, not int
Se quiser concatenar um valor numérico (p. ex., integer tipo int ou floating-point type float) com uma string, converta o valor numérico para um tipo de string com str() e depois concatene-os com o operador + (ou += operador).
s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25
Se quiser converter o formato de um número, tal como o preenchimento zero ou casas decimais, utilize a função format() ou o formato do método de cadeia().
s = s1 + '_' + format(i, '05') + '_' + s2 + '_' + format(f, '.5f')
print(s)
# aaa_00100_bbb_0.25000
s = '{}_{:05}_{}_{:.5f}'.format(s1, i, s2, f)
print(s)
# aaa_00100_bbb_0.25000
Naturalmente, também é possível incorporar o valor de uma variável directamente numa cadeia sem formatação. Isto é mais simples de escrever do que utilizar o operador +.
s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25
Ver o artigo seguinte para detalhes sobre como especificar o formato.
- Artigos relacionados:Conversão de formato em Python, formato (preenchimento 0, notação exponencial, hexadecimal, etc.)
Desde Python 3.6, foi também introduzido um mecanismo chamado f-string (f-string), que é ainda mais simples de escrever do que de formatar().
s = f'{s1}_{i:05}_{s2}_{f:.5f}'
print(s)
# aaa_00100_bbb_0.25000
s = f'{s1}_{i}_{s2}_{f}'
print(s)
# aaa_100_bbb_0.25
Concatenar e juntar listas (arrays) de cordas: join()
O método string join() pode ser usado para concatenar uma lista de cordas numa única corda.
O seguinte é como escrevê-lo.
'String to be inserted between'.join([List of strings to be concatenated])
Método call join() com 'string to insert between' e passar [lista de strings a concatenar] como argumento.
Se for utilizada uma corda vazia, [lista de cordas a serem concatenadas] será simplesmente concatenada, se for utilizada uma vírgula, as cordas serão separadas por vírgula, e se for utilizada uma nova linha de caracteres, cada elemento da corda será recriado.
l = ['aaa', 'bbb', 'ccc']
s = ''.join(l)
print(s)
# aaabbbccc
s = ','.join(l)
print(s)
# aaa,bbb,ccc
s = '-'.join(l)
print(s)
# aaa-bbb-ccc
s = '\n'.join(l)
print(s)
# aaa
# bbb
# ccc
Embora apenas um exemplo de uma lista seja dado aqui, outros objectos iteráveis como tuplos também podem ser especificados como argumentos para aderir().
Ao contrário de join(), split() é utilizado para dividir uma cadeia delimitada por um delimitador específico e obtê-lo como uma lista.
Concatenar e combinar listas (arrays) de números como cordas: join(),str()
Ocorre um erro se o argumento para aderir() for uma lista cujos elementos não são strings.
l = [0, 1, 2]
# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found
Para concatenar uma lista de números numa única cadeia, aplicar a função str() a cada elemento da notação de compreensão da lista para converter os números numa cadeia, e depois juntá-los com join().
s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2
Também pode ser escrito como uma expressão geradora, que é uma versão geradora de compreensões de listas. As expressões geradoras são incluídas entre parênteses, mas os parênteses podem ser omitidos se a expressão geradora for o único argumento para uma função ou método.
s = '-'.join((str(n) for n in l))
print(s)
# 0-1-2
s = '-'.join(str(n) for n in l)
print(s)
# 0-1-2
As expressões geradoras têm geralmente a vantagem de utilizar menos memória do que as compreensões de listas, mas não há nenhuma vantagem particular em utilizar expressões geradoras uma vez que o join() converte os geradores em listas no seu processamento interno. De facto, é ligeiramente mais rápido utilizar as compreensões de listas desde o início.
Para mais informações sobre a compreensão da lista e expressões geradoras, ver o artigo seguinte.
- Artigos relacionados:Como utilizar as compreensões da lista Python