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: >>> '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
>>> x = "Até-mais"
>>> x.split("-")
['Até', 'mais']partition()
particiona com base na primeira ocorrência e retorna o seperator; Retorna uma tuple.
python
>>> x = "Até-mais"
>>> 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
>>> x= 'Olá'
>>> x
'Olá'
>>> x.upper()
'OLÁ'
– Em minúsculas, uma string
python
>>> x.lower()
'olá'
– Capitalize a primeira palavra na string
python
>>> x= 'bom dia'
>>> x
'bom dia'
>>> x.capitlize()
'Bom dia'
– Contar quantos a
tem uma string
python
>>> x = "Fraternidade"
>>> x.count ("a")
2
– Localização da primeira ocorrência de a
python
>>> x = "Fraternidade"
>>> x.find("a")
2
>>> x.find("n")
6
- O uso do médoto
isalnum()
retornará True se todos os caracteres em x forem alfanuméricos
python
>>> x.isalnum()
True - O uso do método
isalpha()
retorná True se todos os caracteres em x forem alfabéticos
python
>>> 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
>>> x = "Oi"
>>> len(x)
2
>>> 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
- Copyright – Learn Python Fundamental in 30 Days — (Introduction to Python)[medium.com – devops-challenge] http://medium.com/devops-challenge *
Deixe um comentário