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:
| Metoda | Popis |
|---|---|
| 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.
| Řádek | Vý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ód | Popis |
|---|---|
| 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.