Python – Indexando strings

Publicado: outubro 8, 2007 em Python

Com base no livro “A Byte of Python” de Swaroop C H.”


Em Python as strings podem ser indexadas; o primeiro caractere de uma string é indexado como zero. Substrings podem ser especificadas com a notação de dois índices separados pelo sinal de dois pontos.

%python
Python 2.4.3 (#2, Nov  1 2006, 09:28:18)
[GCC 3.4.4 [FreeBSD] 20050518] on freebsd6
Type “help”, “copyright”, “credits” or “license” for more information.
>>> string = “Indexando strings com Python”
>>> string[0]
‘I’
>>> string[1]
‘n’
>>> string[2]
‘d’
>>> string[0:9]
‘Indexando’
>>> string[10:17]
‘strings’

Se o primeiro índice for omitido o padrão será zero, se o segundo índice for omitido o padrão será o final da string.

>>> string[:17]
‘Indexando strings’
>>> string[17:]
‘ com Python’
>>>

Strings Python não podem ser alteradas. Atribuir um valor a uma posição numa string resulta em um erro:

>>> string[17] = ‘a’
Traceback (most recent call last):
File “<stdin>”, line 1, in ?
TypeError: object does not support item assignment

Strins podem ser concatenadas. Para isto basta estarem lado a lado ou usar o operador +:

>>> ‘Richardson’ ‘Py’ ‘Hachid’
‘RichardsonPyHachid’
>>> ‘Richardson’ ‘Py’ + ‘Hachid’
‘RichardsonPyHachid’
>>> ‘Richardson’ ‘Py’ + ‘ Hachid’
‘RichardsonPy Hachid’
>>> ‘Richardson’ ‘ Py’ + ‘Hachid’
‘Richardson PyHachid’
>>>
>>>
>>> nome = ‘Richardson’
>>> nome + ‘ PyHachid’
‘Richardson PyHachid’
>>> nome[:8]
‘Richards’
>>> nome[:8] + nome[8:]
‘Richardson’
>>>

Índices incoerentes com o tamanho da string são tratados de forma especial. Um índice final maior que o tamanho da string é substituído pelo tamanho da string. Um índice final menor que o inicial retorna uma string vazia.

>>> nome[:100]
‘Richardson’
>>> nome[4:3]

>>>
Índices podem ser números negativos. Neste caso a contagem é iniciada a partir da direita. Por exemplo:

>>> nome
‘Richardson’
>>> nome[-1]
‘n’
>>> nome[-2]
‘o’
>>> nome[-3]
‘s’
>>> nome[-4]
‘d’
>>> nome[-4:]
‘dson’
>>> nome[:-4]
‘Richar’
>>>

Mas observe que -0 é realmente o mesmo que 0, assim não conta a partir da direita!

>>> nome[0]
‘R’
>>> nome[-0]
‘R’

Índices negativos de tamanho maior que o tamanho da string são truncados, mas não tente isto com índices simples:

>>> nome[-100:]
‘Richardson’
>>> nome[-100]
Traceback (most recent call last):
File “<stdin>”, line 1, in ?
IndexError: string index out of range
>>>

A melhor maneira de lembrar como estes índices trabalham é imaginá-los como apontadores que apontam para entre os caracteres, iniciando com o índice mais a esquerda numerado como zero. Assim, o índice mais a direita do último caractere de uma string de n caracteres tem índice n, por exemplo:

+—+—+—+—+—+—+—+—+—+—+
| R  |  i  |  c  |  h |  a |  r  |  d  |  s  |  o | n  |
+—+—+—+—+—+—+—+—+—+—+
0    1    2    3    4    5    6    7    8    9    10
-11 -10 -9   -8  -7  -6   -5   -4   -3   -2  -1

A primeira linha de números mostra a posição dos índices 0…10 na string; a segunda linha mostra os índices negativos correspondentes. O intervalo de i até j consiste em todos os caracteres entre os limites i e j respectivamente.

Para índices não negativos, o tamanho do intervalo é a diferença entre os índices, se ambos estiverem dentro dos limites. Por exemplo, o tamanho de word[1:3] é 2.

A função len() retorna o tamanho da string:

>>> nome
‘Richardson’
>>> len(nome)
10
>>>

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s