Lesson 5
Cordas
1. Cordas
Uma string pode ser lida a partir da entrada padrão usando a função input()
ou definida em aspas simples ou duplas. Duas strings podem ser concatenadas, e também podemos repetir uma string n multiplicando por inteiro:
print('>_< ' * 5) # > _ <> _ <> _ <> _ <> _ <
Uma string em Python é uma sequência de caracteres. A função len(some_string)
retorna quantos caracteres existem em uma string:
print(len('abcdefghijklmnopqrstuvwxyz')) # 26
Todo objeto em Python pode ser convertido em string usando a função str(some_object)
. Então podemos converter números em strings:
s = str(2 ** 100) print(s) # 1267650600228229401496703205376 print(len(s)) # 31
2. Fatias: caractere único
Uma fatia fornece da string dada um caractere ou algum fragmento: substring ou subsequence.
Existem três formas de fatias. A forma mais simples da fatia: uma única fatia de caracteres S[i]
dá i
th personagem da string. Contamos os caracteres a partir de 0. Ou seja, se
,
,
,
,
,
. Note que no Python não existe um tipo separado para os caracteres da string. S[i]
também possui o tipo str
, assim como a string de origem.
O número i
em S[i]
é chamado de índice .
Se você especificar um índice negativo, ele será contado a partir do final, começando com o número -1
. Ou seja,
,
,
,
,
.
Vamos resumir na tabela:
Cordas | H | e | eu | eu | o |
---|---|---|---|---|---|
Índice | S [0] | S [1] | S [2] | S [3] | S [4] |
Índice | S [-5] | S [-4] | S [-3] | S [-2] | S [-1] |
Se o índice na fatia S[i]
for maior ou igual a len(S)
, ou menor que -len(S)
, o erro a seguir será causado por IndexError: string index out of range
.
3. Fatias: substring
Fatia com dois parâmetros S[a:b]
retorna a subseqüência de comprimento b - a
, começando com o caractere no índice a
e durando até o caractere no índice b
, não incluindo o último. Por exemplo, S[1:4] == 'ell'
, e você pode obter a mesma substring usando S[-4:-1]
. Você pode misturar índices positivos e negativos na mesma fatia, por exemplo, S[1:-1]
é uma substring sem o primeiro e último caractere da string (a fatia começa com o caractere com o índice 1 e termina com um índice de -1, sem incluí-lo).
Fatias com dois parâmetros nunca causam IndexError
. Por exemplo, para S == 'Hello'
a fatia S[1:5]
retorna a string 'ello'
, e o resultado é o mesmo, mesmo que o segundo índice seja muito grande, como S[1:100]
.
Se você omitir o segundo parâmetro (mas preservar os dois pontos), a fatia vai para o final da string. Por exemplo, para remover o primeiro caractere da string (seu índice é 0), use a fatia S[1:]
. Da mesma forma, se você omitir o primeiro parâmetro, o Python levará a fatia do começo da string. Ou seja, para remover o último caractere da string, você pode usar a fatia S[:-1]
. A fatia S[:]
corresponde à própria string S
4. Fatias: imutabilidade de cordas
Qualquer fatia de uma string cria uma nova string e nunca modifica a original. Em Python, as strings são imutáveis, ou seja, elas não podem ser alteradas como objetos. Você só pode atribuir a variável à nova string, mas a antiga permanece na memória.
Na verdade, em Python não há variáveis. Existem apenas os nomes associados a qualquer objeto. Você pode primeiro associar um nome a um objeto e depois - com outro. Vários nomes podem ser associados a um e ao mesmo objeto.
Vamos demonstrar isso:
s = 'Hello' t = s # s e t apontam para a mesma string t = s[2:4] # agora t aponta para a nova string 'll' print(s) # impressões 'Olá' como s não é alterado print(t) # imprime 'll'
5. Fatias: subsequência
Se você especificar uma fatia com três parâmetros S[a:b:d]
, o terceiro parâmetro especifica a etapa, o mesmo que para a range()
função range()
. Nesse caso, apenas os caracteres com o seguinte índice são obtidos: a
a + d
, a + 2 * d
e assim por diante, até e sem incluir o caractere com o índice b
. Se o terceiro parâmetro for igual a 2, a fatia receberá cada segundo caractere e, se a etapa da fatia for igual a -1
, os caracteres serão executados na ordem inversa. Por exemplo, você pode inverter uma string como esta: S[::-1]
. Vamos ver os exemplos:
s = 'abcdefg' print(s[1]) print(s[-1]) print(s[1:3]) print(s[1:-1]) print(s[:3]) print(s[2:]) print(s[:-1]) print(s[::2]) print(s[1::2]) print(s[::-1])
range()
funções range()
:s = 'abcdefghijklm' print(s[0:10:2]) for i in range(0, 10, 2): print(i, s[i])
6. Métodos de string: find () e rfind ()
Um método é uma função que está vinculada ao objeto. Quando o método é chamado, o método é aplicado ao objeto e faz alguns cálculos relacionados a ele. Os métodos são chamados como object_name.method_name(arguments)
. Por exemplo, em s.find("e")
o método de string find()
é aplicado à string s
com um argumento "e"
.
O método find()
procura uma substring, passada como um argumento, dentro da string na qual é chamada. A função retorna o índice da primeira ocorrência da subseqüência. Se a substring não for encontrada, o método retornará -1.
s = 'Hello' print(s.find('e')) # 1 print(s.find('ll')) # 2 print(s.find('L')) # -1
Da mesma forma, o método rfind()
retorna o índice da última ocorrência da subseqüência.
s = 'abracadabra' print(s.find('b')) # 1 print(s.rfind('b')) # 8
Se você chamar find()
com três argumentos s.find(substring, left, right)
, a pesquisa será executada dentro da fatia s[left:right]
. Se você especificar apenas dois argumentos, como s.find(substring, left)
, a pesquisa será executada na fatia s[left:]
, ou seja, começando com o caractere no índice left
para o final da string. O método s.find(substring, left, right)
retorna o índice absoluto, relativamente à string inteira s
, e não à fatia.
s = 'my name is bond, james bond, okay?' print(s.find('bond')) # 11 print(s.find('bond', 12)) # 23
7. Métodos de string: replace ()
O método replace()
substitui todas as ocorrências de uma dada substring por outra. Sintaxe: s.replace(old, new)
pega a string S
e substitui todas as ocorrências de substring old
pela substring new
. Exemplo:
print('a bar is a bar, essentially'.replace('bar', 'pub')) # 'um pub é um pub, essencialmente'
Pode-se passar a count
do terceiro argumento, assim: s.replace(old, new, count)
. Isso faz com que replace()
substitua apenas as ocorrências da primeira count
e, em seguida, pare.
print('a bar is a bar, essentially'.replace('bar', 'pub', 1)) # 'um pub é um bar, essencialmente'
8. Métodos de string: count ()
Este método conta o número de ocorrências de uma string dentro de outra string. A forma mais simples é esta: s.count(substring)
. Apenas ocorrências não sobrepostas são consideradas:
print('Abracadabra'.count('a')) # 4 print(('aaaaaaaaaa').count('aa')) # 5
Se você especificar três parâmetros
, a contagem será executada dentro da fatia s[left:right]
.