Comment puis-je vérifier si un Python unicode chaîne contient des non-Ouest de lettres?

J'ai un Python chaîne Unicode. Je veux m'assurer qu'il ne contient que des lettres de l'alphabet Romain (A à Z), ainsi que des lettres couramment trouvés dans les alphabets Européens, tels que le ß, ü, ø, é, à, et î. Il devrait pas contenir des caractères à partir d'autres alphabets (Chinois, Japonais, coréen, arabe, Cyrillique, hébreu, etc.). Quelle est la meilleure façon de faire cela?

Actuellement j'utilise ce bout de code, mais je ne sais pas si c'est la meilleure façon:

def only_roman_chars(s):
    try:
        s.encode("iso-8859-1")
        return True
    except UnicodeDecodeError:
        return False

(Je suis à l'aide de Python 2.5. Je fais également présent dans Django, donc si le framework Django arrive à avoir un moyen de gérer ces chaînes, je peux utiliser cette fonctionnalité -- je n'ai pas rencontré quelque chose comme ça, cependant.)

  • Quel est votre but dans le filtrage de ces personnages? Je ne peux pas penser à une bonne raison de le faire ce qui n'est pas un symptôme de quelque chose de mal, d'ailleurs dans le code.
  • Le filtrage des adresses postales. Notre service d'expédition ne voulez pas avoir à remplir des étiquettes avec, par exemple, le Chinois des adresses.
  • Ne pouvez-vous pas de filtre sur le pays à la place alors? (sinon, question intéressante +1)
  • Pas vraiment. Quelqu'un pourrait sélectionnez "Chine" et encore entrer une adresse appropriée, par exemple.
  • github.com/EliFinkelshteyn/alphabet-detector/blob/master/...
InformationsquelleAutor mipadi | 2010-06-22