Přejít na hlavní obsah

Jak zkontrolovat, že řetězec se skládá pouze z číslic v Pythonu

  • Lenka Čechová
  • Triky

Když pracujete s čísly v Pythonu, někdy možná budete muset zjistit, zda se řetězec skládá pouze z číslic. To může být užitečné například při zpracování uživatelského vstupu nebo při práci s daty ze souboru.

V tomto článku vám řeknu několik způsobů, jak zkontrolovat, zda se řetězec skládá výhradně z číslic v Pythonu. Prvním a nejjednodušším způsobem je použití vestavěné metody řetězce isdigit (). Vrátí se True, pokud se řetězec skládá pouze z číslic, a False jinak.

Existují také další způsoby, jak zkontrolovat, zda se řetězec skládá pouze z číslic. Můžete například použít pravidelné výrazy pomocí modulu re. Ať už zvolíte jakýkoli způsob, pamatujte, že správná kontrola a zpracování dat je důležitou součástí programování.

Metody kontroly řetězce pouze číslic v Pythonu

Python nabízí několik metod ke kontrole, zda se řetězec skládá pouze z číslic. To může být užitečné při validaci zadávání dat nebo při zpracování textových souborů, kde je nutné pracovat pouze s čísly.

Zde je několik metod, které lze použít k ověření řetězce pouze číslicemi:

MetodaPopis
isdigit()Kontroluje, zda jsou všechny znaky v řádku číslicemi. Vrátí True, pokud jsou všechny znaky číslice, jinak vrátí False.
isnumeric()Kontroluje, zda jsou všechny znaky na řádku čísla. Počítá také symboly představující zlomková čísla a matematické symboly, jako jsou indexy notace nebo čísla v římském formátu. Vrátí True, pokud jsou všechny znaky čísla, jinak vrátí False.
isdecimal()Kontroluje, zda jsou všechny znaky na řádku desetinnými číslicemi (0-9). Nebere v úvahu symboly představující desetinné děliče nebo symboly jiných číselných systémů. Vrátí True, pokud jsou všechny znaky desetinná čísla, jinak vrátí False.

Níže jsou uvedeny příklady použití každé z těchto metod:

string1 = "12345"string2 = "123.45"string3 = "123a45"# Использование метода isdigit()# Использование метода isnumeric()# Использование метода isdecimal()

Pomocí těchto metod můžete snadno zkontrolovat, zda se řetězec skládá pouze z číslic v Pythonu a podle výsledku kontroly provést příslušné kroky.

Metoda 1: Použití cyklu for a funkce isdigit()

Zde je uveden příklad kódu:

for cyklus a isdigit()
def is_digits(string):
for char in string:
if not char.isdigit():
return False
return True

Tuto funkci můžete použít ke kontrole libovolného řádku na stav z číslic. Jednoduše předejte řetězec jako argument funkce is_digits () a vrátí True , pokud jsou všechny znaky v řádku číslicemi, a False jinak.

Příklad použití:

Příklad
print(is_digits("123456")) # True
print(is_digits("123abc")) # False
print(is_digits("abcdefg")) # False

V tomto příkladu kódu funkce is_digits() kontroluje řádky "123456" , "123abc" a "abcdefg" na stav z číslic. První řádek se skládá pouze z čísel, takže výsledek bude True . Druhý a třetí řádek obsahují znaky, které nejsou číslice, takže výsledek bude False .

Metoda 2: použití regulárních výrazů

Abychom ověřili, že řetězec se skládá pouze z číslic, můžeme použít regulární výraz ^\d+$ . Zde symbol ^ znamená začátek řádku, \d je libovolná číslice, + je jeden nebo více vstupů předchozího znaku a $ je konec řádku.

ŘádekVýsledek
"12345"True
"hello123"False
"9876543210"True
"123 456"False

Zde je návod, jak můžete použít regulární výrazy ke kontrole, zda se řetězec skládá pouze z číslic:

import redef is_digit_string(string):pattern = r'^\d+$'if re.match(pattern, string):return Trueelse:return Falsestring = input("Введите строку: ")if is_digit_string(string):print("Строка состоит только из цифр.")else:print("Строка не состоит только из цифр.")

Při spuštění programu budete moci zadat řádek, který chcete zkontrolovat. Program zobrazí zprávu, zda se řetězec skládá pouze z čísel nebo ne.

Použití regulárních výrazů umožňuje flexibilnější a přesnější kontrolu určitých šablon v řádku. Tato metoda je obzvláště užitečná, pokud potřebujete nejen zkontrolovat, zda se řádek skládá z číslic, ale také identifikovat další šablony nebo formáty.

Metoda 3: Použití metody str.isdigit()

V Pythonu existuje vestavěná metoda isdigit(), který umožňuje určit, zda se řetězec skládá pouze z číslic. Metoda vrací hodnotu True pokud jsou všechny znaky v řádku digitální, a False pokud existuje alespoň jeden nedigitální symbol.

Příklad použití metody isdigit():

string = "12345"string = "12345abc"string = "abc"
Jak ukazuje příklad, metoda isdigit() lze použít k rychlému a pohodlnému ověření pouze číslic v řádku. Je zvláště užitečný při práci s uživatelským zadáním dat nebo v případě potřeby zkontrolujte, zda je řádek číslo.

Metoda 4: Použití funkce str.isnumeric()


Функция isnumeric() возвращает True, если строка состоит только из символов, которые являются числами. В противном случае, она возвращает False. Например:
string = "12345"print(string.isnumeric())string = "12a45"print(string.isnumeric())

Функция isnumeric() обрабатывает только символы, которые являются числами. Она не распознает десятичные числа, отрицательные числа или числа с разделителями тысяч. Для таких случаев лучше использовать другие методы проверки строки на числовое содержимое.
Метод str.isnumeric() является простым и удобным способом для проверки, что строка содержит только цифры в Python.

Metoda 5: Použití modulu unicodedata


Модуль unicodedata в Python предоставляет функциональность для работы с символами Юникода. Он позволяет проверять, относится ли символ к определенной категории. С помощью этого модуля можно проверить, состоит ли строка только из цифр.
Вот пример использования модуля unicodedata для проверки строки на наличие только цифр:
KódPopis
import unicodedata Import modulu unicodedata
def is_digit(string): Definice funkce is_digit s parametrem string
for char in string: Cyklus pro každý znak v řádku
if unicodedata.category(char) != 'Nd': Kontrola Kategorie znaků. Pokud to není číslo, vrací se False
return False Vrátí False, pokud je nalezen znak, který není číslicí
return True Vrátí True, pokud jsou všechny znaky v řádku číslicemi
string = "12345" Testovací řetězec
print(is_digit(string))
string = "12345a" Testovací řetězec
print(is_digit(string))

Použití modulu unicodedata umožňuje zkontrolovat řádek pouze na digitální znaky bez použití regulárních výrazů nebo vestavěných funkcí Pythonu.