Strings - Learn Python 3 - Snakify

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)  # &gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;

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
Advertising by Google, may be based on your interests

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]i th personagem da string. Contamos os caracteres a partir de 0. Ou seja, se S = 'Hello' , S[0] == 'H' , S[1] == 'e' , S[2] == 'l' , S[3] == 'l' , S[4] == 'o' . 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, S[-1] == 'o' , S[-2] == 'l' , S[-3] == 'l' , S[-4] == 'e' , S[-5] == 'H' .

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 .

Advertising by Google, may be based on your interests

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

Advertising by Google, may be based on your interests

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 &#39;ll&#39;
print(s)  # impressões &#39;Olá&#39; como s não é alterado
print(t)  # imprime &#39;ll&#39;
Advertising by Google, may be based on your interests

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])
Observe como o terceiro parâmetro da fatia é semelhante ao terceiro parâmetro do range() funções range() :
s = 'abcdefghijklm'
print(s[0:10:2])
for i in range(0, 10, 2):
    print(i, s[i])
Advertising by Google, may be based on your interests

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
Advertising by Google, may be based on your interests

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'))
# &#39;um pub é um pub, essencialmente&#39;

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))
# &#39;um pub é um bar, essencialmente&#39;
Advertising by Google, may be based on your interests

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 s.count(substring, left, right) , a contagem será executada dentro da fatia s[left:right] .

Advertising by Google, may be based on your interests