У строки в 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
#Sondaggi
#Albania🇦🇱
#Parlamentari
Sondaggio di MRB-Hellas + Euronews Albania.
Data: 24 aprile-4 maggio 2025.
Campione: 1.600 persone.
🟪 Partito Socialista d'Albania (#PSSh|S&D): 48,2% (+0,3)
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 31,9% (-1,8%)
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 7,9% (+1,2)
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 7,5% (+1,2)
🟥 Movimento Insieme (#LB|Sinistra): 2,0% (-0,4%)
Altri: 2,5%
N.B.: tra parentesi è indicata la variazione rispetto all'ultimo sondaggio del medesimo istituto (10-21 aprile).
@TuttoElezioni
#Sondaggi
#Albania🇦🇱
#Parlamentari
Sondaggio di MRB-Hellas + Euronews Albania.
Data: 10-21 aprile 2025.
Campione: 1.600 persone.
🟪 Partito Socialista d'Albania (#PSSh|S&D): 47,9% (-0,4%)
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 33,7% (-2,3%)
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 6,7% (+0,4%)
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 6,3% (+1,5%)
🟥 Movimento Insieme (#LB|Sinistra): 2,4% (-0,1%)
Altri: 3%
N.B.: tra parentesi è indicata la variazione rispetto all'ultimo sondaggio del medesimo istituto (15-25 febbraio).
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Distribuzione dei seggi.
🟪 Partito Socialista d'Albania (#PSSh|S&D): 83
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 50
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 1
🟥 Movimento Insieme (#LB|Sinistra): 1
Maggioranza: 71 (✅ PSSh)
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 5.214/5.225 (99,79%)
Buste estere scrutinate: 100.835/194.889 (51,74%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,29%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 33,87%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,84%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,23%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 3,10%
🟥 Movimento Insieme (#LB|Sinistra): 1,52%
Altri: 2,15%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 5.088/5.225 (96,82%)
Buste estere scrutinate: 55.798/194.889 (28,63%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,19%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,18%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,70%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,32%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 3,02%
🟥 Movimento Insieme (#LB|Sinistra): 1,45%
Altri: 2,14%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 4.919/5.225 (94,14%)
Buste estere scrutinate: 38.806/194.889 (19,91%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,20%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,29%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,63%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,40%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,95%
🟥 Movimento Insieme (#LB|Sinistra): 1,41%
Altri: 2,12%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 3.799/5.225 (72,70%)
Buste estere scrutinate: 25.741/194.889 (13,21%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,51%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,01%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,65%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,53%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,89%
🟥 Movimento Insieme (#LB|Sinistra): 1,36%
Altri: 2,05%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 2.871/5.225 (54,95%)
Buste estere scrutinate: 10.056/194.889 (5,16%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,76%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 33,85%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,82%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,50%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,80%
🟥 Movimento Insieme (#LB|Sinistra): 1,33%
Altri: 1,94%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 2.241/5.225 (42,89%)
Buste estere scrutinate: 2.010/194.889 (1,03%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,61%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,18%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,94%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,38%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,71%
🟥 Movimento Insieme (#LB|Sinistra): 1,30%
Altri: 1,88%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 1.624/5.225 (31,08%)
Buste estere scrutinate: 1.660/194.889 (0,85%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,80%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,29%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,74%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,47%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,62%
🟥 Movimento Insieme (#LB|Sinistra): 1,25%
Altri: 1,83%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 1.139/5.225 (21,80%)
Buste estere scrutinate: 1.660/194.889 (0,85%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,73%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,32%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,74%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,49%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,65%
🟥 Movimento Insieme (#LB|Sinistra): 1,24%
Altri: 1,83%
@TuttoElezioni