У меня есть строка, содержащая символы юникода (кириллица):
myString1 = 'Австрия'
myString2 = 'AustriЯ'
Я хочу проверить, все ли элементы в строке являются английскими (ASCII). Теперь я использую цикл:
for char in myString1:
if ord(s) not in range(65,91):
break
Поэтому, если я нахожу первый неанглийский элемент, я прерываю цикл. Но для данного примера вы можете видеть, что строка может содержать много английских символов и Unicode в конце. Таким образом я проверю всю строку. Кроме того, если вся строка на английском языке, я все равно проверяю каждый символ.
Есть ли более эффективный способ сделать это? Я думаю о чем-то вроде:
if any(myString[:]) is not in range(65,91)
range(65,91)
совсем маленький: только прописные буквы!'Austria
'будет отклонен, потому что он содержит строчные буквы, аord('a')
уже 97. Даже не говоря о пунктуации и цифрах, которые действительно находятся в кодировке ASCII. Что именно вы пытаетесь сделать? - person Serge Ballesta   schedule 26.12.2017range(65,91)
иrange(48,58)
. Поэтому я использую двойное условие в заявленииif
. - person Mikhail_Sam   schedule 26.12.2017