Всіх вітаю! У даній статті ми поговоримо про методи визначення вмісту рядка за допомогою таких вбудованих методів як isnumeric(), isdigit() та isdecimal(). Також ми з’ясуємо різницю між цими трьома методами та як ними корисуватися.
Метод isnumeric()
Метод isnumeric() повертає True, якщо рядок містить тільки числові значення. Якщо ж рядок не містить лише числові значеня, то метод повертає False.
Приклад 1
У першому прикладі ми просто застосовуємо метод isnumeric() до рядка price_tag, який має значення 100:
price_tag = "100"
check_string = price_tag.isnumeric()
print(check_string)TrueТепер пропоную додати знак $ до рядка price_tag:
price_tag = "100$"
check_string = price_tag.isnumeric()
print(check_string)FalseПриклад 2
Спробуємо перевірити цей дріб:
price_tag = "½"
check_string = price_tag.isnumeric()
print(check_string)TrueЯкщо ми дамо методу число у степені, то він теж поверне True:
number = "15³"
check_string = number.isnumeric()
print(f"{number} -- {check_string}")15³ -- TrueТакож метод isnumeric() повертає True, якщо ми запишемо число у римській системі числення:
five = "\u2164"
check_string = five.isnumeric()
print(f"{five} -- {check_string}")Ⅴ -- TrueРисмські цифри записуються за допомогою спеціальних Unicode кодів. Наприклад, \u2164 означає римську цифру п’ять.
Приклад 3
Далі пропоную також пройтися по кожному ціннику у списку price_tags та перевіити їх вміст:
price_tags = ["9.99", "222", "1.5"]
for tags in price_tags:
check_string = tags.isnumeric()
print(f"{tags} -- {check_string}")9.99 -- False
222 -- True
1.5 -- FalseТут отримали False для “9.99” та “1.5”, так як крапка не є числом.
Метод isdigit()
Даний метод більш вузьконаправлений, адже він перевіряє рядок на те, чи містить він тільки цифри. До них він також включає й степені, які ми використовували нижче, але вона не приймає дроби або цифри в різних форматах.
Приклад 1
Отже, спочатку запишемо тільки цифри:
digits = "0123456789"
check_string = digits.isdigit()
print(f"{digits} -- {check_string}")0123456789 -- TrueЗвісно, якщо ми додамо літер, то метод буде повертати False:
digits = "0123456789abcd"
check_string = digits.isdigit()
print(f"{digits} -- {check_string}")0123456789abcd -- FalseПриклад 2
Тепер пропоную подивитися на реакцію даного метода на дріб:
digits = "½"
check_string = digits.isdigit()
print(f"{digits} -- {check_string}")½ -- FalseЦе і є відмінність між методами isnumeric() та isdigit(). Як вже було сказано вище, isdigit() не приймає дробів.
І цифри в римській системі числення вона також не приймає, на відміну від isnumeric():
digits = "\u2164"
check_string = digits.isdigit()
print(f"{digits} -- {check_string}")Ⅴ -- FalseПриклад 3
Якщо ж ми передамо даному методу степінь, то він успішно поверне True:
digits = "15³"
check_string = digits.isdigit()
print(f"{digits} -- {check_string}")15³ -- TrueМетод isdecimal()
Метод isdecimal() повертає True, тоді і тільки тоді, коли рядок містить лише цифри без якихось інших особливостей. Тобто даний метод не праймає ані дроби, ані степені, ані різні формати запису цифр.
Приклад 1
Ось приклад, коли ми даємо рядок з цифрами 1020304050:
digits = "1020304050"
check_string = digits.isdecimal()
print(f"{digits} -- {check_string}")1020304050 -- TrueПриклад 2
Даємо методу дріб:
digits = "½"
check_string = digits.isdecimal()
print(f"{digits} -- {check_string}")½ -- FalseТепер степінь:
digits = "15³"
check_string = digits.isdecimal()
print(f"{digits} -- {check_string}")15³ -- FalseПриклад 3
І також цифри у римській системі числення теж не приймаються:
digits = "\u2164"
check_string = digits.isdecimal()
print(f"{digits} -- {check_string}")Ⅴ -- FalseВисновок
У якості висновку можна зазначити, що isnumeric() охоплює широкий спектр числових значень, у той час як метод isdigit() охоплює тільки цифри та степінь, а isdecimal() охоплює лише цифри без якихось особливостей.