Este blog foi desenvolvido no intuito de auxiliar àqueles que estão iniciando no mundo do Python 3.x
Mostrando postagens com marcador tamanho. Mostrar todas as postagens
Mostrando postagens com marcador tamanho. Mostrar todas as postagens
domingo, 12 de abril de 2015
BRINCANDO COM STRINGS - ÍNDICES E INVERSÕES
Vamos agora fazer umas 'falcatruas' com strings.
Escolhi strings por serem o resultado de muitas conversões
Vamos ao princípio básico: o índice.
>>> a='KAKAROTO'
>>> a[0]
'K'
>>> a[1]
'A'
>>> a[2]
'K'
>>> a[3]
'A'
>>> a[4]
'R'
>>> a[5]
'O'
>>> a[6]
'T'
>>> a[7]
'O'
>>> a[8]
Traceback (most recent call last):
File "<pyshell#103>", line 1, in <module>
a[8]
IndexError: string index out of range
Percebemos aqui então que o índice sempre começa com 0 (zero) e termina com o tamanho (lenth) -1. Ou seja, tem 8 caracteres de 0 a 7.
Aqui os escolhemos todos os índices do início [0] até [2]
>>> a[:2]
'KA'
Aqui escolhemos todos os índices maiores que dois até o fim na string
>>> a[2:]
'KAROTO'
Aqui escolhemos os quatro último índices.
>>> a[-4:]
'ROTO'
Aqui escolhemos todos os índices do início até o quarto último.
>>> a[:-4]
'KAKA'
Aqui escolhemos todos os índices, do primeiro [0] até o índice do tamanho total da string [len(a)]. O resultado é mesmo que se não especificássemos os índices, mas é de cunho didático.
>>> a[0:len(a)]
'KAKAROTO'
Aqui escolhemos do terceiro índice o tamanho total da string menos dois (total-2).
>>> a[3:len(a)-2]
'ARO'
Para entender direitinho essa coisa de índice, veja a imagem lá em cima, ok?
Mas e se eu receber a string invertida???
Aí tem esse comando:
>>> b='ATEGEV'
>>> b[::-1]
'VEGETA'
Nossa! Que máximo!!! Ficou fácil inverter, hein?
ÔPA! Péraí caceta! Fui inverter minha string de um resultado em HEX, deu errado!
Não se desespere! Vamos ver:
>>> h = hex(2341522)
>>> h
'0x23ba92'
>>> h[::-1]
'29ab32x0'
Realmente não deu muito certo. O que fazer?
Vamos lá.
Aqui utilizaremos uma biblioteca chamada binascii. Informações aqui e aqui.
>>> h= hex(2341522)
>>> h
'0x23ba92'
>>> h.split('x')[1]
'23ba92'
>>> h=h.split('x')[1]
>>> h
'23ba92'
>>> import binascii
>>> result=binascii.unhexlify(h[0:len(h)].encode())
>>> result
b'#\xba\x92'
>>> result[::-1]
b'\x92\xba#'
>>> result=binascii.unhexlify(h.encode())
>>> result
b'#\xba\x92'
>>> result=hexlify(result[::-1]).decode()
>>> result
'92ba23'
Vixxx Maria!!! Quanta informação!!!
Vamos com calma.
A parte do split, já vimos em um post anterior.
A parte do binascii.hexlify, transformou a string em um hexadecimal 'binário'. Daí, quando invertemos com o [::-1], ao invés de inverter cada um dos caracteres, invertemos os bytes (conjuntos de oito bits).
A parte do binascii.unhexlify transfmormou o hexadecimal 'binário' em uma string novamente.
Tão lindo, não é?
Assinar:
Postagens (Atom)