xf3 xc3 xb1 utf8 error codificacion acentos python regex non-english

xc3 - Detecta cadenas con caracteres no ingleses en Python



python encode utf8 (3)

Si trabaja con cadenas (no objetos Unicode), puede limpiarlo con la traducción y verificar con isalnum() , lo que es mejor que lanzar excepciones:

import string def isEnglish(s): return s.translate(None, string.punctuation).isalnum() print isEnglish(''slabiky, ale liší se podle významu'') print isEnglish(''English'') print isEnglish(''ގެ ފުރަތަމަ ދެ އަކުރު ކަ'') print isEnglish(''how about this one : 通 asfަ'') print isEnglish(''?fd4))45s&'') print isEnglish(''Текст на русском'') > False > True > False > False > True > False

También puedes filtrar caracteres no ascii de la cadena con esta función:

ascii = set(string.printable) def remove_non_ascii(s): return filter(lambda x: x in ascii, s) remove_non_ascii(''slabiky, ale liší se podle významu'') > slabiky, ale li se podle vznamu

Tengo algunas cadenas que tienen una mezcla de letras en inglés y ninguna en inglés. Por ejemplo:

w=''_1991_اف_جي2''

¿Cómo puedo reconocer estos tipos de cadenas usando Regex o cualquier otro método rápido en Python?

Prefiero no comparar las letras de la cadena una por una con una lista de letras, sino hacerlo de una sola vez y rápidamente.


Solo puede verificar si la cadena se puede codificar solo con caracteres ASCII (que son alfabeto latino + algunos otros caracteres). Si no se puede codificar, entonces tiene los caracteres de algún otro alfabeto.

Tenga en cuenta el comentario # -*- coding: .... Debería estar allí en la parte superior del archivo de python (de lo contrario, recibiría algún error sobre la codificación)

# -*- coding: utf-8 -*- def isEnglish(s): try: s.encode(encoding=''utf-8'').decode(''ascii'') except UnicodeDecodeError: return False else: return True assert not isEnglish(''slabiky, ale liší se podle významu'') assert isEnglish(''English'') assert not isEnglish(''ގެ ފުރަތަމަ ދެ އަކުރު ކަ'') assert not isEnglish(''how about this one : 通 asfަ'') assert isEnglish(''?fd4))45s&'')


import re english_check = re.compile(r''[a-z]'') if english_check.match(w): print "english",w else: print "other:",w