3885
Comentário:
|
3987
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 1: | Linha 1: |
Um pequeno fragmento de código que pode ser usado para remover acentos de strings. (Facção vira Faccao) |
#pragma section-numbers off = Tirador de Acentos = |
Linha 4: | Linha 4: |
O Código foi escirto para fazer isso em strigns UTF-8 , consideravelemente mais complexas do que as ISO-8859-1 |
Um pequeno fragmento de código que pode ser usado para remover acentos de strings. Exemplo: "Facção" vira "Faccao" |
Linha 7: | Linha 6: |
Uma pequena alteração (para mais simples) se faz necessária para funcionar em ISO-8859-1 | O Código foi escrito para fazer isso em strings UTF-8, consideravelmente mais complexas do que as strings ISO-8859-1. |
Linha 9: | Linha 8: |
Uma vez que eu precisava também da funcionalidade de "verficação de imprimibilidade" de uma string, e o código seria muito parecido, abaixo as duas estão implementadas, com um "layer" de interface para cada funcionalidade. |
Uma pequena alteração (para mais simples) se faz necessária para funcionar com strings ISO-8859-1. |
Linha 13: | Linha 10: |
Disponibilizo o código aqui sob a LGPL. Não estou distribuindo junto o texto full da LGPL, mas o público alvo saberá acha-lo. Então, os que forem usar o código, o façam sabendo que "mesmo não tendo assinado nada, os termos declarados na LGPL são a única licença para uso deste código a que têm acesso, e sua violação implica em perda dos direitos de uso deste código". |
Uma vez que eu precisava também da funcionalidade de "verificação de imprimibilidade" de uma string, e o código seria muito parecido, abaixo as duas estão implementadas, com um "layer" de interface para cada funcionalidade. |
Linha 18: | Linha 12: |
---- | Disponibilizo o código aqui sob a LGPL. Não estou distribuindo junto o texto full da LGPL, mas o público alvo saberá acha-lo. Então, os que forem usar o código, o façam sabendo que "mesmo não tendo assinado nada, os termos declarados na LGPL são a única licença para uso deste código a que têm acesso, e sua violação implica em perda dos direitos de uso deste código". |
Linha 32: | Linha 27: |
Linha 35: | Linha 28: |
Linha 55: | Linha 46: |
"""check if all characters are in printable range and valid in roman alphabet languages""" | """check if all characters are in printable range and valid in roman alphabet languages""" |
Linha 96: | Linha 88: |
"""check if all characters are in printable range and valid in romam alphabet languages""" | """check if all characters are in printable range and valid in romam alphabet languages""" |
Linha 101: | Linha 94: |
"""replace non ASCII characters for '?' ' or equiv. letter if it is an western european accented letter.""" | """replace non ASCII characters for '?' ' or equiv. letter if it is an western european accented letter.""" |
Linha 106: | Linha 100: |
PS - Obviamente o código acima tem que ser gravado em UTF-8. | PS. Obviamente o código acima tem que ser gravado em UTF-8. ---- Nome do Autor |
Tirador de Acentos
Um pequeno fragmento de código que pode ser usado para remover acentos de strings. Exemplo: "Facção" vira "Faccao"
O Código foi escrito para fazer isso em strings UTF-8, consideravelmente mais complexas do que as strings ISO-8859-1.
Uma pequena alteração (para mais simples) se faz necessária para funcionar com strings ISO-8859-1.
Uma vez que eu precisava também da funcionalidade de "verificação de imprimibilidade" de uma string, e o código seria muito parecido, abaixo as duas estão implementadas, com um "layer" de interface para cada funcionalidade.
Disponibilizo o código aqui sob a LGPL. Não estou distribuindo junto o texto full da LGPL, mas o público alvo saberá acha-lo. Então, os que forem usar o código, o façam sabendo que "mesmo não tendo assinado nada, os termos declarados na LGPL são a única licença para uso deste código a que têm acesso, e sua violação implica em perda dos direitos de uso deste código".
# -*- coding: UTF-8 -*- #Arrancador de acentos #Copyright (2004) João S. O. Bueno #Permissao para uso e modificacao conforme a LGPL. #uso: check_alphanum (string) retorna verdadeiro se a string é imprimivivel #strip_diacriticals : troca todos os acentos pelos equivalentes nao acentuados. # e retorna a string alterada import copy conversion= { "á": "a", "é": "e", "í": "i", "ó": "o", "ú": "u", "à": "a", "è": "e", "ì": "i", "ò": "o", "ù": "u", "â": "a", "ê": "e", "î": "i", "ô": "o", "û": "u", "ã": "a", "õ": "o", "ñ": "n", "ç":"c", "Á": "A", "É": "E", "Í": "I", "Ó": "O", "Ú": "U", "À": "A", "È": "E", "Ì": "I", "Ò": "O", "Ù": "U", "Â": "A", "Ê": "E", "Î": "I", "Ô": "O", "Û": "U", "Ã": "A", "Õ": "O", "Ñ": "N", "Ç": "C", "Ü": "U", "û":"u", "Ä":"A", "ä":"a", "Ë":"E", "ë":"e", "Ï":"I", "ï":"i", "Ö":"O", "ö":"o", "ð":"?", "ß":"ss", "Å":"A","å":"a", "ø":"o", "Ø":"O", "Þ":"?" , "æ":"ae" } alphanum_ops_CHECK=0 alphanum_ops_FIX=1 def _alphanum_util (string, operation): """check if all characters are in printable range and valid in roman alphabet languages""" global alphanum_ops_CHECK, alphanum_ops_FIX global conversion ok=1 out_string="" skip=0 aux=len(string) for i in xrange(aux): if skip: skip-=1 continue char=string[i] num=ord(char) if num>=32 and num<=127: out_string+=char else: if num> 127 and i<aux-1 and conversion.has_key (string[i]+string[i+1]): out_string+=conversion[string[i]+string[i+1]] skip=1 else: out_string+="?" ok=0 if operation==alphanum_ops_CHECK: return ok #the following values are picked from utf-8 specification #and mean the number of bytes following the first byte > 0xc0 #that are part of the same utf-8 character if num >= 0xf0: skip=3 elif num >= 0xe0: skip-2 elif num>= 0xc0: skip=1 else: skip=0 if operation==alphanum_ops_CHECK: return ok else: return out_string def check_alphanum (string): """check if all characters are in printable range and valid in romam alphabet languages""" global alphanum_ops_CHECK, alphanum_ops_FIX return _alphanum_util (string, alphanum_ops_CHECK) def strip_diacriticals (string): """replace non ASCII characters for '?' ' or equiv. letter if it is an western european accented letter.""" global alphanum_ops_CHECK, alphanum_ops_FIX return _alphanum_util (string, alphanum_ops_FIX)
PS. Obviamente o código acima tem que ser gravado em UTF-8.
Nome do Autor