У строки в 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
#Italia#Albania
La Presidente del Consiglio, Giorgia #Meloni (#FdI|ECR), ha ricevuto oggi a Palazzo Chigi il Primo Ministro della Repubblica d’Albania, Edi #Rama (#PSSh|S&D).
“A cinque mesi dal Vertice Intergovernativo di Roma, il colloquio ha permesso di fare il punto sul rafforzamento del partenariato tra le due Nazioni nei settori di interesse comune, con un focus particolare su connettività, industria della difesa e collaborazione in materia migratoria”, si legge in una nota.
@OsservatorioItaliano
#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