У строки в Python есть два очень похожих метода. На столько похожих что кажется они делают одно и тоже.
Это метод isdigit() и isnumeric()
Давайте посмотрим зачем нам два одинаковых метода? И так ли они одинаковы?
Очевидно что isdigit() говорит нам, состоит ли строка только из чисел 0-9
>>> '12'.isdigit()
True
>>> '12x'.isdigit()
False
>>> '-12'.isdigit()
False
>>> '12.5'.isdigit()
False
Можно предположить что isnumeric() делает более глубокий анализ и распознаёт в строке float или отрицательное число.
>>> '15'.isnumeric()
True
>>> '-15'.isnumeric()
False
>>> '15.2'.isnumeric()
False
Нет, всё так же как и с другим методом. В чем же тогда разница? Для начала посмотрим следующие примеры:
>>> '5'.isdigit(), '5'.isnumeric() # Обычная цифра 5
# True, True
>>> '꧕'.isdigit(), '꧕'.isnumeric() # Яванская 5
# True, True
>>> '෩'.isdigit(), '෩'.isnumeric() # Синхала 3
# True, True
>>> '৩'.isdigit(), '৩'.isnumeric() # Бенгальская 3
# True, True
>>> '༣'.isdigit(), '༣'.isnumeric() # Тибетская 3
# True, True
>>> '³'.isdigit(), '³'.isnumeric() # 3 верхний индекс (степень)
# True, True
>>> '𝟝'.isdigit(), '𝟝'.isnumeric() # Математическая двойная 5
# True, True
>>> '๔'.isdigit(), '๔'.isnumeric() # Тайская 4
# True, True
>>> '➑'.isdigit(), '➑'.isnumeric() # 8 в круге
# True, True
А теперь примеры в которых, по мнению Python, результаты не равны
>>> '¾'.isdigit(), '¾'.isnumeric() # дробь три четверти
# False, True
>>> '⅕'.isdigit(), '⅕'.isnumeric() # дробь одна пятая
# False, True
>>> '𒐶'.isdigit(), '𒐶'.isnumeric() # клинопись 3
# False, True
>>> '三'.isdigit(), '三'.isnumeric() # 3 из унифицированной идеограммы
# False, True
>>> '⑩'.isdigit(), '⑩'.isnumeric() # цифра 10 в круге
# False, True
>>> 'Ⅳ'.isdigit(), 'Ⅳ'.isnumeric() # Римская 4
# False, True
>>> '𑇪'.isdigit(), '𑇪'.isnumeric() # Сенегальская архаическая 10
# False, True
>>> '𐌢'.isdigit(), '𐌢'.isnumeric() # Этрусская цифра 10
# False, True
>>> 'ↂ'.isdigit(), 'ↂ'.isnumeric() # Римская цифра 10000
# False, True
>>> '〇'.isdigit(), '〇'.isnumeric() # Символ ККЯ ноль
# False, True
Получается, что isdigit() говорит нам, является ли символ десятичной цифрой или спецсимволом, имеющим цифирное значение после преобразования.
В свою очередь isnumeric() включает все дополнительные символы юникода которые имеют отношения к числовым и цифровым представлениям.
Ну и пара примеров в которых в обоих случаях символ не является числом, это эмодзи.
>>> '🕙'.isdigit(), '🕙'.isnumeric() # эмодзи 10 часов
# False, False
>>> '7️⃣'.isdigit(), '7️⃣'.isnumeric() # эмодзи 7
# False, False
Также есть еще один дополнительный и весьма полезный метод isdecimal().
Он нам сообщает, можно ли из указанного символа сделать простую десятичную цифру. То есть сработает ли метод int(x)
>>> '෩'.isdecimal(), int('෩') # Синхала 3
# True, 3
>>> '➑'.isdecimal(), int('➑') # 8 в круге
# False, ValueError
Какие выводы?
🔸 При определении цифры в строке isdigit() подходит лучше чем isnumeric(), но оба не гарантируют успешную конвертацию в int
🔸 Для однозначного определения возможности преобразования строки в int лучше подходит метод isdecimal()
🔸 Для однозначного определения символов 0...9 лучше использовать regex
Полный список символов юникода которые определяются как numeric
#basic
😄Character
➖➖➖➖➖➖
Character is a noun and it can mean:
🔘 'a person in a book or a film'
🔜The best friend is my favourite character.
🔘‘the quality that makes someone who they are’.
🔜He has a forgiving character.
🔘someone who is mentally strong can 'have a lot of character' or 'be a strong character'.
🔜She'll be a great manager; she has a lot of character.
🔜You'll need to be a strong character to get through this challenge.
🔘‘the quality that makes places and things interesting, different or attractive’.
🔜It's a beautiful village, full of character.
#Character👨🏫@America
➖➖➖➖➖➖➖➖➖➖➖➖
🆕 Crypto News @Money
😁 Crypto Game @Egame
🇺🇸 US News @America
🇯🇵 Japan News @Japan
🇦🇪 UAE News @Dubai
▶️ Popular Movies @Videos
😜 Best Funny Video @Funnys
Discord @casajordi Midjourney #character Photography, masterpiece of black and white soft portrait photography, art by Irving Penn A chic Bengal Tiger with fashion dress, clothes by Balenciaga, ultra realistic minimalist fashion photography, art by mario testino for vogue, chic, elegant, haute couture, natural light, minimalist background
@midjourney • @midjourney_ru
Discord @madhutungnirun Midjourney #character art russia, angel, portrait, painting, art deco, russianart, french art digital painting, in the style of light sky-blue and light gold,, photorealistic fantasies, princesscore, elegant, emotive faces, rococo portraitures, close up, soft, romantic scenes
@midjourney • @midjourney_ru
Discord @y0844 Midjourney #character cute monkey monster wearing Chinese martial arts costumes, Chinese Wuxia, Chinese painting style, cartoon IP, movie lights, clean white background, advanced color scheme, octane rendering, full body, Extreme detail, Kung Fu, surrealism, 3D, Behance, Pinterest, trendy blind box toys, award winning
@midjourney • @midjourney_ru
Discord @johnjbamboo Midjourney #character color streetphotography of a person in Shanghai, in the style of Magnum Photo with motion blur and foreground blur, reflections
@midjourney • @midjourney_ru
Discord @apptist Midjourney #character A cute, simple toy-like pink hippo face with a white background. The hippo's mouth is wide open, showing smooth, toothless gums. It has big, expressive eyes, a rounded snout, and a cheerful expression. The face is bright pink and smooth, with no body parts visible. The design is playful and inviting for a children's game
🐟 t.me/midjourney_ru
🐽t.me/midjourney_character
🐟t.me/midjourney_dark
Discord @centaur509 Midjourney #character Studio portrait photography of an old indian woman on a dark background, wearing a white shirt, with projection mapping onto her back. The image projected onto the back is a crowd of people
@midjourney • @midjourney_ru
Discord @superpedro4711 Midjourney #character etherreal ultra realistic futuristic eloquent cute adorable small Flying Squirrels with a huge human smile and big beautiful dreamy eyes eating Layer rice, sweet and sour chicken, pineapple chunks, and bell peppers. Top with sesame seeds and green onion, sitting in fantasy world, dark blue-purple sparkling tones background, lens flare, diffused lighting, fantasy, intricate, highly detailed, lifelike, concept art
@midjourney • @midjourney_ru