Baixe o app para aproveitar ainda mais
Prévia do material em texto
"Strings" www.pythonlearn.com • Uma “string” é uma sequência de caracteres; • Uma string é representada (delimitada) por aspas: 'Alô' ou “Alô”; • Para strings, o operador “+” significa “concatenar”; • Quando uma string contém números, ela continua sendo uma string; • Nós podemos converter números que compõem uma string para números usando os métodos int() ou float() Tipo de Dado "String" >>> str1 = "Alo" >>> str2 = 'voce' >>> bob = str1 + str2 >>> print(bob) Alovoce >>> str3 = '123' >>> str3 = str3 + 1 Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: cannot concatenate 'str' and 'int' objects >>> x = int(str3) + 1 >>> print(x) 124 >>> • Nós lemos os dados usando strings e então convertemos os dados conforme a necessidade; • Isso nos dá maior controle diante de situações de erro e/ou informações fornecidas pelo usuário; • Números recebidos pelo comando input() são considerados strings e devem ser convertidos para números usando int() ou float(). Lendo e Convertendo >>> nome = input('Entre: ') Entre: Chuck >>> print(nome) Chuck >>> apple = input('Entre: ') Entre: 100 >>> x = apple – 10 Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: unsupported operand type(s) for -: 'str' and 'int' >>> x = int(apple) – 10 >>> print(x) 90 Inspecionando Strings • Nós podemos acessar qualquer caractere em uma string utilizando um índice entre colchetes • O índice deve ser um número inteiro e a contagem começa por 0 (zero) • O índice pode ser uma expressão que deve ser computada >>> fruit = 'banana' >>> letter = fruit[1] >>> print(letter) a >>> n = 3 >>> w = fruit[n - 1] >>> print(w) n 0 b 1 a 2 n 3 a 4 n 5 a Começando do Final • Podemos começar contando do final da string (pouco usual) • Devemos usar um índice negativo • A contagem a partir do final da string começa em -1 • A forma mais intuitiva é começar a contagem do começo da string (slide anterior) >>> fruit = 'banana' >>> letter = fruit[-6] >>> print(letter) b >>> n = -3 >>> w = fruit[n - 1] >>> print(w) n -6 b -5 a -4 n -3 a -2 n -1 a 0 1 2 3 4 5 Um Caractere Muito Distante • Você receberá uma mensagem de erro se tentar acessar um índice além do final da string • Cuidado ao construir índices e intervalos >>> zot = 'abc' >>> print(zot[5]) Traceback (most recent call last): File "<stdin>", line 1, in <module>IndexError: string index out of range >>> Strings Possuem Tamanho • A função do Python len retorna o tamanho de uma string >>> fruit = 'banana' >>> print(len(fruit)) 6 0 b 1 a 2 n 3 a 4 n 5 a Função Len >>> fruit = 'banana' >>> x = len(fruit) >>> print(x) 6 len() function 'banana' (a string) 6 (a number) Iterando Strings • Utilizando o comando while, uma varíavel de iteração, e a função len, nós podemos construir um loop para inspecionar cada letra em uma string • Passo a passo: https://goo.gl/oqZMtk fruit = 'banana' index = 0 while index < len(fruit): letter = fruit[index] print(index, letter) index = index + 1 0 b 1 a 2 n 3 a 4 n 5 a Iterando Strings • Utilizando o comando for fica muito mais elegante • Passo a passo: https://goo.gl/nog9ur b a n a n a fruit = 'banana' for letter in fruit: print(letter) Iterando Strings • Utilizando o comando for fica muito mais elegante index = 0 while index < len(fruit) : letter = fruit[index] print(letter) index = index + 1 fruit = 'banana' for letter in fruit : print(letter) b a n a n a Iterando e Contando • Um loop simples para verificar cada caractere individual e verificar quantos são iguais ao caractere 'a’ • Passo a passo: https://tinyurl.com/y2dqwhfs word = 'banana' count = 0 for letter in word : if letter == 'a' : count = count + 1 print(count) Iterando Utilizando o in • A variável de iteração “itera” através da sequência (conjunto ordenado) • O bloco de código é executado uma vez para cada valor na (in) sequência • A variável de iteração move através de todos os valores na (in) sequência for letter in 'banana’: print(letter) Variável de iteração String de 6 caracteres Fim? Sim print(letter) Avança letra for letter in 'banana' : print(letter) b a n a n a • A variável de iteração “itera” através da sequência e o bloco de código é executado uma vez para cada valor na (in) sequência Não • Nós também podemos inspecionar um pedaço contínuo de uma string utilizando o operador : (slicing) • O segundo número é não inclusivo • Se o segundo número for maior que o tamanho da string, ele para no final da string Slicing Strings >>> s = 'Monty Python' >>> print(s[0:4]) Mont >>> print(s[6:7]) P >>> print(s[6:20]) Python 0 M 1 o 2 n 3 t 4 y 5 6 P 7 y 8 t 9 h 10 o 11 n • Se omitirmos o primeiro ou o último valor do intervalo, então assume-se o início ou o final da string, respectivamente Slicing Strings >>> s = 'Monty Python' >>> print(s[:2]) Mo >>> print(s[8:]) thon >>> print(s[:]) Monty Python 0 M 1 o 2 n 3 t 4 y 5 6 P 7 y 8 t 9 h 10 o 11 n • É possível usar números negativos no slicing também (pouco usual) Slicing Strings >>> s = 'Monty Python' >>> print(s[:-7]) Monty >>> print(s[-6:]) Python >>> print(s[-6:-4]) Py >>> print(s[-1:-12]) 0 M 1 o 2 n 3 t 4 y 5 6 P 7 y 8 t 9 h 10 o 11 n -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 • Existe um terceiro parâmetro no slicing, o stride (passo) • Quantos caracteres você deseja avançar após recuperar cada caractere da string original Slicing Strings >>> s = 'Monty Python' >>> print(s[0:12:2]) MnyPto >>> print(s[::3]) MtPh >>> print(s[-12:-7:-1]) >>> print(s[-1:-13:-1]) nohtyP ytnoM >>> print(s[::-1]) nohtyP ytnoM 0 M 1 o 2 n 3 t 4 y 5 6 P 7 y 8 t 9 h 10 o 11 n -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 Concatenação de Strings • Quando o operador + é aplicado a strings, ele é "concatenação" >>> a = 'Hello' >>> b = a + 'There' >>> print(b) HelloThere >>> c = a + ' ' + 'There' >>> print(c) Hello There >>> Usando in como um operador • A palavra reservada in pode ser utilizada para verificar se uma string está contida em outra • A expressão in é uma expressão lógica e retorna True ou False e também pode ser utilizada em comandos if >>> fruit = 'banana’ >>> 'n' in fruit True >>> 'm' in fruit False >>> 'nan' in fruit True >>> if 'a' in fruit : ... print('Found it!’) ... Found it! >>> Comparação de Strings if word == 'banana': print('All right, bananas.’) if word < 'banana': print('Your word,' + word + ', comes before banana.’) elif word > 'banana': print('Your word,' + word + ', comes after banana.’) else: print('All right, bananas.’) Biblioteca String • Python possui um grande número de funções para manipular strings • Essas funções já estão presentes em todas as strings – nós chamamos essas funções simplesmente adicionando o nome da função à string • Essas funções não modificam a string. Elas retornam uma nova string modificada >>> greet = 'Hello Bob' >>> zap = greet.lower() >>> print(zap) hello bob >>> print(greet) Hello Bob >>> print('Hi There'.lower()) hi there >>> http://docs.python.org/lib/string-methods.html >>> stuff = 'Hello world’ >>> type(stuff)<type 'str'> >>> dir(stuff) ['capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace','rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] http://docs.python.org/lib/string-methods.html str.capitalize() str.center(width[, fillchar]) str.endswith(suffix[, start[, end]]) str.find(sub[, start[, end]]) str.lstrip([chars]) str.replace(old, new[, count]) str.lower() str.rstrip([chars]) str.strip([chars]) str.upper() http://docs.python.org/lib/string-methods.html Biblioteca String Procurando uma String • Usamos a função find() para procurar uma substring dentro de outra string • find() procura a primeira ocorrência da substring • Se a substring não for encontrada, find() retorna -1 • Lembre-se que os índices começam em 0 (zero) >>> fruit = 'banana' >>> pos = fruit.find('na') >>> print(pos) 2 >>> aa = fruit.find('z') >>> print(aa) -1 0 b 1 a 2 n 3 a 4 n 5 a Fazendo tudo MAIÚSCULO • Você pode fazer uma cópia de uma string em minúsculo (lower case) ou maiúsculo (upper case) • Normalmente, quando estamos procurando por uma string com o find(), primeiro nós convertemos a string para minúsculo (o case não é importante) >>> greet = 'Hello Bob' >>> nnn = greet.upper() >>> print(nnn) HELLO BOB >>> www = greet.lower() >>> print(www) hello bob >>> Procurar e Substituir • A função replace() é como uma operação de “procurar e substituir” de um processador de texto • Ela substitui todas as ocorrências da string sendo procurada pela string de substituição >>> greet = 'Hello Bob' >>> nstr = greet.replace('Bob','Jane') >>> print(nstr) Hello Jane >>> nstr = greet.replace('o','X') >>> print(nstr) HellX BXb >>> Removendo Espaços em Branco • Algumas vezes, queremos remover os espaços em branco no começo e final de uma string • lstrip() e rstrip() removem espaços em branco à esquerda e à direita • strip() remove espaços em branco tanto no começo quanto no final >>> greet = ' Hello Bob ' >>> greet.lstrip() 'Hello Bob ' >>> greet.rstrip() ' Hello Bob' >>> greet.strip() 'Hello Bob' >>> >>> line = 'Please have a nice day’ >>> line.startswith('Please') True >>> line.startswith('p') False Prefixos >>> data = 'From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008’ >>> atpos = data.find('@') >>> print(atpos) 21 >>> sppos = data.find(' ',atpos) >>> print(sppos) 31 >>> host = data[atpos + 1 : sppos] >>> print(host) uct.ac.za From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008 21 31 Analisando e extraindo Acknowledgements / Contributions These slides are Copyright 2010- Charles R. Severance (www.dr-chuck.com) of the University of Michigan School of Information and open.umich.edu and made available under a Creative Commons Attribution 4.0 License. Please maintain this last slide in all copies of the document to comply with the attribution requirements of the license. If you make a change, feel free to add your name and organization to the list of contributors on this page as you republish the materials. Initial Development: Charles Severance, University of Michigan School of Information … Insert new Contributors here ...
Compartilhar