Aprenda os fundamentos do Python em 30 Dias — Dia 3 (Strings)

Original: medium.com – devops-challenge


Strings são apenas uma seqüência de caracteres letras, caracteres especiais, espaço, dígitos. Podemos usar aspas simples ' ou duplas " para representar uma string

>>> x = “hello”
>>> x
‘hello’
>>> x = ‘hello’
>>> x
‘hello’

Razões para usar aspas simples ao invés de duplas em uma string:

 >>> 'Tudo por uma gota d'água'
  File "<stdin>", line 1
    'Tudo por uma gota d'água'
                            ^
SyntaxError: invalid syntax
>>> "Tudo por uma gota d'água"
"Tudo por uma gota d'água"

NOTA: O mesmo pode ser verificado quando no interior de sentenças com aspas duplas existir o símbolo ". Podemos contornar o problema usando o caracter especial \ (escape) para escrever o ' literalmente. Ex: &gt;&gt;&gt; 'Tudo por uma gota d\'água'

Operações em Strings

Para determinar o comprimento da string

>>> len("hello")
5

Concatenação é feita usando o operador + (ou em outras palavras, podemos dizer, temos sobrecarregado-lo)

>>> "Olá" + "mundo"
'Olá Mundo'

Concatenação sucessiva em string

>>> x = "Olá"
>>> x * 3
'Olá Olá Olá'

Indexação em seqüência de caracteres (indexação iniciar com zero não um)

>>> x[0]
'O'

Obter o último elemento

>>> x[-1]
'à'

Tente obter algo fora do limites (índices) de alcance (out of range)

>>> x[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

Podemos fatiar (slice) a string

>>> x[0:2]
'Ol'

# OU
>>> x[:2]
'Ol'

# Para pegar tudo
>>> x
'Olá'

Podemos usar join() para juntar string

>>> "-".join(["Olá", "como", "vai", "você"])'Olá-como-vai-você'

Podemos usar split() para dividir uma string em uma lista (Sem um argumento, split() divide em pelos espaços em branco)

>>> y
'Olá-como-vai-você'
>>> y = 'Olá-como-vai-você'
>>> y
'Olá-como-vai-você'
>>> y.split("-")
['Olá', 'como', 'vai', 'você']
>>> # Dividir por um elemento específico
... 
>>> x = "Programador Python"
>>> x.split("d")
['Programa', 'or Python']
>>> 

Particionar

Usando o método partition() se divide uma seqüência de caracteres em três, em torno de um separador (prefixo, separador, sufixo)

>>> "HastalavitaBaby".partition('la')
('Hasta', 'la', 'vitaBaby')

Como o retorno é uma tupla, é útil desestruturar o resultado:

>>> x,y,z = "HastalavitaBaby".partition('la')
>>> x
'Hasta'
>>> y
'la'
>>> z
'vitaBaby'
>>> 

Podemos usar um nome fictício (_) para o separador -:

>>> a,_,b = "Até-mais".partition('-')
>>> a
'Até'
>>> b
'mais'
>>> _
'-'

NOTA: a principal diferença entre divisão split() e partição partition

  • split() dividir a cadeia de caracteres (string) em cada ocorrência de '-'; Retorna uma list.
    python
    &gt;&gt;&gt; x = "Até-mais"
    &gt;&gt;&gt; x.split("-")
    ['Até', 'mais']
  • partition() particiona com base na primeira ocorrência e retorna o seperator; Retorna uma tuple.
    python
    &gt;&gt;&gt; x = "Até-mais"
    &gt;&gt;&gt; x.partition("-")
    ('Até', '-', 'mais')

Formatar

O método format() é usado para inserir valores em strings, campos de substituição delimitados por {e}

>>> "Meu nome é {0} e minha idade é {1} anos".format("Hans", 30)
'Meu nome é Hans e minha idade é 30 anos'

Métodos das String

Objetos em Python geralmente têm métodos embutidos. Esses métodos são funções dentro do objeto que podem executar ações ou comandos no próprio objeto
– Em maiúsculas, uma string
python
&gt;&gt;&gt; x= 'Olá'
&gt;&gt;&gt; x
'Olá'
&gt;&gt;&gt; x.upper()
'OLÁ'

– Em minúsculas, uma string
python
&gt;&gt;&gt; x.lower()
'olá'

– Capitalize a primeira palavra na string
python
&gt;&gt;&gt; x= 'bom dia'
&gt;&gt;&gt; x
'bom dia'
&gt;&gt;&gt; x.capitlize()
'Bom dia'

– Contar quantos a tem uma string
python
&gt;&gt;&gt; x = "Fraternidade"
&gt;&gt;&gt; x.count ("a")
2

– Localização da primeira ocorrência de a
python
&gt;&gt;&gt; x = "Fraternidade"
&gt;&gt;&gt; x.find("a")
2
&gt;&gt;&gt; x.find("n")
6

  • O uso do médoto isalnum() retornará True se todos os caracteres em x forem alfanuméricos
    python
    &gt;&gt;&gt; x.isalnum()
    True
  • O uso do método isalpha() retorná True se todos os caracteres em x forem alfabéticos
    python
    &gt;&gt;&gt; x.isalpha()
    True
  • O método islower() retornará True se todos os caracteres em x estiverem em minúsculas e houver pelo menos um caractere não numérico em x, False caso contrário.
    >>> x = 'Fraternidade'
    >>> x.islower()
    False
    >>> x =    'la'
    >>> x.islower()
    True
    >>> x= '989'
    >>> x.islower()
    False
    >>> x= '989a'
    >>> x.islower()
    True
    >>> x= '989A'
    >>> x.islower()
    False
    
    
  • O médoto endswith() serve para verificar se uma seqüência de caracteres (string) termina com determinado caractere
    >>> x = "Liberdade"
    >>> x.endswith('e')
    True
    

    NOTA: Tome cuidado com este tipos de operações

  • As strings são imutáveis (immutables): uma vez criadas, não podemos alterá-las

    >>> y = "Jgualdade"
    >>> y[0] = "I"
    Traceback (most recent call last):
      File "", line 1, in 
    TypeError: 'str' object does not support item assignment
    
    

    No entanto você pode fazê-lo como este

    >>> x = "I" + y[1:]
    >>> x
    'Igualdade'
    
  • Multiplicar string com string produz erro
    >>> "1" * "ab"
    Traceback (most recent call last):
      File "", line 1, in 
    TypeError: can't multiply sequence by non-int of type 'str'
    
  • Erro de índice fora de intervalo válido (o primeiro índice do comprimento começa com 0 zero)
    python
    &gt;&gt;&gt; x = "Oi"
    &gt;&gt;&gt; len(x)
    2
    &gt;&gt;&gt; x[len(x)]
    Traceback (most recent call last):
    File "", line 1, in
    IndexError: string index out of range
  • A caixa dos caracteres é sensitiva (case sensitive) em Python (Python e PYTHON não são iguais)
    >>> x = 'Python'
    >>> x == 'PYTHON'
    False
    
  • Algumas coisas mais complexas, imprima tudo exceto o último caractere
    >>> x[:-1]
    'Pytho'
    
  • Uso do passo (step) para impressão com um incremento por exemplo 2
    >>> x = 'Python'
    >>> x[0:5:2]
    'Pto'
    # Alternativamente (a string inteira)
    >>> x[:-1:2]
    'Pto'
    
  • Pergunta mais famosa (inverter uma string)
    >>> x = 'Python'
    >>> x[::-1]
    'nohtyP'
    

Exercícios

Qual é o resultado de:
1. "A" + "bc"
2. Qual é a diferença na saída de "ab" * 2 vs "ab" * "2"
3. Qual é a diferença na saída de "abcde"[3] vs "abcde"[5]
4. Qual é a diferença na saída de "abcde"[0:2] vs "abcde"[:2] vs "abcde"[2:]
5. Se x = "Oi", o que é len(x) e x[len(x)]


Final da lição do Dia 03, Em caso de dúvidas ou qualquer outra discussão, este é o link para o canal (Comunicação somente em Inglês – english only) Python Slack channel http://devops-myworld.slack.com


Escrito por zrhans

Professor at UFSM

Deixe um comentário

Faça o login usando um destes métodos para comentar:

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