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] .