Detecta cadenas con caracteres no ingleses en Python

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 encoding)

 # -*- 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&') 

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 
 import re english_check = re.compile(r'[az]') if english_check.match(w): print "english",w else: print "other:",w