como contar caracteres com acento

497 views
Skip to first unread message

Maria Silva

unread,
Dec 13, 2017, 7:03:45 AM12/13/17
to Python Brasil
Socorro! estou fazendo trabalho de recuperação em PC!
preciso saber como fazer um programa que pede para inserir uma string e conta quantos caracteres da string tem acentos, crase...

Fabio C. Barrionuevo da Luz

unread,
Dec 13, 2017, 7:16:44 AM12/13/17
to python...@googlegroups.com
Ola, Maria,

Qual o código você já vez?


Em 13 de dezembro de 2017 09:03, Maria Silva <coldcandiea...@gmail.com> escreveu:
Socorro! estou fazendo trabalho de recuperação em PC!
preciso saber como fazer um programa que pede para inserir uma string e conta quantos caracteres da string tem acentos, crase...

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/9fc6d6af-c69b-430b-8b06-b5ed0a4941e7%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Fábio C. Barrionuevo da Luz
Palmas - Tocantins - Brasil - América do Sul


Blog colaborativo sobre Python e tecnologias Relacionadas, mantido totalmente no https://github.com/pythonclub/pythonclub.github.io .

Todos são livres para publicar. É só fazer fork, escrever sua postagem e mandar o pull-request. Leia mais sobre como publicar em README.md e contributing.md.
Regra básica de postagem:
"Você" acha interessante? É útil para "você"? Pode ser utilizado com Python ou é útil para quem usa Python? Está esperando o que? Publica logo, que estou louco para ler...

Maria Silva

unread,
Dec 13, 2017, 7:20:25 AM12/13/17
to Python Brasil
Fiz esse código... mas ta errado...

def conta_caracteres(string):
    v = {}
    d = {}
    p = {}
    vogais = 'aeiou'
    diácriticos = 'àáôóêéíúüçãõ'
    pontuação = '!#$£%¢&*ªº,.;:?<>'
    for i in vogais:
        if i in string:
            v[i] = string.count(i)
    for i in diácriticos:
        if i in string:
            d[i] = string.count(i)
    for i in pontuação:
        if i in string:
            p[i] = string.count(i)
    return('Vogais minúsculas: {0}\nDiácriticos: {1}\nPontuação: {2}'.format(v, d, p))

Em quarta-feira, 13 de dezembro de 2017 10:16:44 UTC-2, Fabio Caritas Barrionuevo da Luz escreveu:
Ola, Maria,

Qual o código você já vez?

Em 13 de dezembro de 2017 09:03, Maria Silva <coldcandiea...@gmail.com> escreveu:
Socorro! estou fazendo trabalho de recuperação em PC!
preciso saber como fazer um programa que pede para inserir uma string e conta quantos caracteres da string tem acentos, crase...

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/9fc6d6af-c69b-430b-8b06-b5ed0a4941e7%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Gilberto Russo

unread,
Dec 13, 2017, 9:32:16 AM12/13/17
to Maria Silva, Python Brasil
Aproveitando seu codigo, se eu entendi o que voce precisa, só fiz a entrada da palavra e a saida dos dados.... Veja se é isto que precisa...

---------------------------------------------
def conta_caracteres(string):
    v = {}
    d = {}
    p = {}
    vogais = 'aeiou'
    diácriticos = 'àáôóêéíúüçãõ'
    pontuação = '!#$£%¢&*ªº,.;:?<>'
    for i in vogais:
        if i in string:
            v[i] = string.count(i)
    for i in diácriticos:
        if i in string:
            d[i] = string.count(i)
    for i in pontuação:
        if i in string:
            p[i] = string.count(i)
    return('Vogais minúsculas: {0}\nDiácriticos: {1}\nPontuação: {2}'.format(v, d, p))

a = str(input("Digite uma palavra: "))

print(conta_caracteres(a))

----------------------------------------------

Regards,

Gilberto Russo

De: python...@googlegroups.com <python...@googlegroups.com> em nome de Maria Silva <coldcandiea...@gmail.com>
Enviado: quarta-feira, 13 de dezembro de 2017 10:20
Para: Python Brasil
Assunto: Re: [python-brasil] como contar caracteres com acento
 

Júlio César de Serpa

unread,
Dec 13, 2017, 12:53:49 PM12/13/17
to python...@googlegroups.com
Segue o código de exemplo que fiz usando Expressões  Regulares: 

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import re 

s = "vire à  esquerda." 

#s = s.replace(" ","")

regex = re.compile("[à-ú]") 

print "Número de Diacrítico = ", len(re.findall(regex, s)) 

regex = re.compile("[aeiou]")

print "Número de Vogais = ", len(re.findall(regex, s)) 

regex = re.compile("[?,.!;:]")
print "Pontuação = ", len(re.findall(regex, s)) 



Em 13 de dezembro de 2017 10:03, Maria Silva <coldcandiea...@gmail.com> escreveu:
Socorro! estou fazendo trabalho de recuperação em PC!
preciso saber como fazer um programa que pede para inserir uma string e conta quantos caracteres da string tem acentos, crase...

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Linux - Junior Polegato

unread,
Dec 13, 2017, 2:53:17 PM12/13/17
to python...@googlegroups.com
Olá!

        Seria interessante, saber o erro, mas batendo o olho vejo a
palavra "diácriticos" com acento no lugar errado, o correto seria
"diacríticos". Toda via, nome de variáveis (ponteiros) não podem ter
acentos, somente letras "normais", números ou _ (sublinhado), não
podendo iniciar por números, portanto retire os diacríticos dos nomes
das variáveis.

        Dito isso, vai encontrar problemas em strings acentuadas se não
especificar o "coding" no início do programa, algo do tipo que costumo
utilizar nas duas primeiras linhas dos meus programas em UTF-8:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

        Em Python 2.7 reside outro problema que é a função "count",
pois ela conta bytes e não caracteres, onde cada caractere pode ter um
ou mais bytes, como é o caso dos diacríticos, portanto deve converter
tudo para unicode, o que não é necessário em Python 3.x, visto que o
mesmo já trabalha em unicode por padrão.

        Para trabalhar tudo em unicode, coloque um "u" antes das aspas
em todas as strings que tiver no código, por exemplo:

diacriticos = u'àáôóêéíúüçãõ'

        Também aconselho fazer o seguinte para assegurar que "string"
seja sempre unicode:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import print_function
import sys
ENCODING = sys.getfilesystemencoding()


def to_unicode(string, encoding=ENCODING):
    if sys.version_info.major == 3:  # Python 3.x
        if isinstance(string, bytes):
            return string.decode(encoding)
        if not isinstance(string, str):
            return str(string)
    elif not isinstance(string, unicode):  # Python 2.7
        return str(string).decode(encoding)
    return string


def conta_caracteres(string, encoding=ENCODING):
    string = to_unicode(string, encoding)
    [... o restante da função ...]


--

[]'s

Junior Polegato

Linux - Junior Polegato

unread,
Dec 13, 2017, 3:08:48 PM12/13/17
to python...@googlegroups.com
Em tempo, talvez seja melhor utilizar o locale:

import locale
locale.setlocale(locale.LC_ALL, '')
ENCODING = locale.getpreferredencoding()

--

[]'s

Junior Polegato

Nilo Menezes

unread,
Dec 13, 2017, 3:22:50 PM12/13/17
to python...@googlegroups.com, Linux - Junior Polegato
Opa,

Só para lembrar que roda perfeitamente em Python 3:
# -*- coding: utf-8 -*-
padrão

Nomes de variáveis, funções, etc com acento: OK
Strings em Python 3 sempre são unicode.

Recomendo usar Python 3.6 o quanto antes.
Python 2.7 só para sistemas legados. Se precisar rodar em Python 2.7 e
3, olhar o six.

O que eu realmente não faria era chamar o parâmetro de string! E o
acento no lugar certo fica melhor.

Pra um problema de lógica, procurar na cadeia acentuada me parece razoável.
O módulo unicodedata tem umas funções interessantíssimas para quem quer
mergulhar no Unicode.

Atenciosamente,

Nilo Menezes
-------------------
Nilo Menezes (@lskbr)
Livro: http://python.nilo.pro.br/
Libro: https://www.librodepython.com

Reply all
Reply to author
Forward
0 new messages