logo

Pythona | Wyodrębnij liczby z ciągu

Wiele razy podczas pracy z ciągami znaków natrafiamy na problem, w którym musimy uzyskać wszystkie wystąpienia liczbowe. Tego typu problemy zwykle występują w programowaniu konkurencyjnym, a także podczas tworzenia stron internetowych. Omówmy pewne sposoby rozwiązania tego problemu Pyton .

  Input:   'There are 2 apples for 4 persons'   Output:   [2, 4]   Explanation:   2 and 4 are the only number present in the input string.>

Wyodrębnij liczby z ciągu w Pythonie

Poniżej znajdują się metody, które omówimy w tym artykule:

Wyodrębnij liczby z ciągu znaków, korzystając ze zrozumienia list i isdigit() metoda

Ten problem można rozwiązać, używając funkcji split do konwersji ciągu na listę, a następnie zrozumienie listy co może nam pomóc w iteracji po liście i jestcyfra Funkcja pomaga uzyskać cyfrę z łańcucha.



Python3




test_string>=> 'There are 2 apples for 4 persons'> # printing original string> print>(>'The original string : '> +> test_string)> # using List comprehension + isdigit() +split()> # getting numbers from string> res>=> [>int>(i)>for> i>in> test_string.split()>if> i.isdigit()]> # print result> print>(>'The numbers list is :'> +> str>(res))>

jak przekonwertować str na int

>

>

Wyjście

The original string : There are 2 apples for 4 persons The numbers list is :[2, 4]>

Złożoność czasowa: O(n), gdzie n jest liczbą elementów w ciągu wejściowym.
Przestrzeń pomocnicza: O(n), gdzie n jest liczbą liczb w ciągu wejściowym.

Wyodrębnij cyfrę z łańcucha za pomocą re.findall() metoda

Ten konkretny problem można również rozwiązać za pomocą Pythona wyrażenie regularne, możemy skorzystać z funkcja findall aby sprawdzić wystąpienia numeryczne przy użyciu pasującego ciągu wyrażeń regularnych.

Python3




import> re> # initializing string> test_string>=> 'There are 2 apples for 4 persons'> # printing original string> print>(>'The original string : '> +> test_string)> # getting numbers from string> temp>=> re.findall(r>'d+'>, test_string)> res>=> list>(>map>(>int>, temp))> # print result> print>(>'The numbers list is : '> +> str>(res))>

>

>

Wyjście

The original string : There are 2 apples for 4 persons The numbers list is : [2, 4]>

Wyodrębnij liczbę Interger z łańcucha za pomocą metody isnumeric().

W Pythonie mamy inumeryczny funkcja, która może powiedzieć użytkownikowi, czy dany element jest liczbą, czy nie, więc za pomocą tej metody możemy również wyodrębnić liczbę z ciągu znaków.

Python3




test_string>=> 'There are 2 apples for 4 persons'> # printing original string> print>(>'The original string : '> +> test_string)> # getting numbers from string> res>=> []> x>=>test_string.split()> for> i>in> x:> >if> i.isnumeric():> >res.append(>int>(i))> # print result> print>(>'The numbers list is : '> +> str>(res))>

>

xor w C++
>

Wyjście

The original string : There are 2 apples for 4 persons The numbers list is : [2, 4]>

Złożoność czasowa: O(N)
Przestrzeń pomocnicza: O(N)

Wyodrębnij cyfrę z ciągu za pomocą funkcji Filter().

Najpierw definiujemy ciąg wejściowy, następnie drukujemy oryginalny ciąg i dzielimy ciąg wejściowy na listę słów za pomocą podział() metoda. Użyj filtr() funkcja do odfiltrowania elementów nienumerycznych z listy poprzez zastosowanie metody funkcja lambda X .isdigit() do każdego elementu Przekonwertuj pozostałe elementy na przefiltrowanej liście na liczby całkowite, korzystając ze zrozumienia list

Wydrukuj wynikową listę liczb całkowitych

Python3




test_string>=> 'There are 2 apples for 4 persons'> print>(>'The original string : '> +> test_string)> # use the split() method to split> # use the filter() function to filter out non-numeric elements from the list> res>=> list>(>filter>(>lambda> x: x.isdigit(), test_string.split()))> # use a list comprehension to convert the remaining elements to integers> res>=> [>int>(s)>for> s>in> res]> # print the resulting list of integers> print>(>'The numbers list is : '> +> str>(res))>

>

>

Wyjście

The original string : There are 2 apples for 4 persons The numbers list is : [2, 4]>

Złożoność czasowa: O(n), gdzie n jest długością ciągu wejściowego. Metoda split() potrzebuje O(n) czasu na podzielenie ciągu wejściowego na listę słów, a funkcja filter() zajmuje O(n) czasu na iterację po każdym elemencie listy i zastosowanie funkcji lambda. Rozumienie listy zajmuje czas O(k), gdzie k to liczba elementów na przefiltrowanej liście, które są cyframi i jest ona zwykle znacznie mniejsza niż n. Dlatego całkowita złożoność czasowa wynosi O (n).

Złożoność przestrzeni pomocniczej: O(n), ponieważ metoda split() tworzy listę słów o tej samej długości co ciąg wejściowy, a funkcja filter() tworzy filtrowaną listę, która może mieć maksymalnie tę samą długość co lista wejściowa. Rozumienie listy tworzy nową listę liczb całkowitych, która jest zwykle znacznie mniejsza niż lista wejściowa, ale w najgorszym przypadku złożoność przestrzeni nadal wynosi O(n). Dlatego ogólna złożoność przestrzeni pomocniczej wynosi O (n)

Wyodrębnij wartość Interger z łańcucha za pomocą pętli i metody isdigit().

Użyj pętli, aby iterować po każdym znaku w ciągu i sprawdź, czy jest to cyfra, używając metody isdigit() metoda. Jeśli jest to cyfra, dołącz ją do listy.

Python3




test_string>=> 'There are 2 apples for 4 persons'> numbers>=> []> for> char>in> test_string:> >if> char.isdigit():> >numbers.append(>int>(char))> print>(>'The numbers list is:'>, numbers)>

>

>

porównanie lwa i tygrysa
Wyjście

The numbers list is: [2, 4]>

Złożoność czasowa: O(n), gdzie n jest długością łańcucha.
Przestrzeń pomocnicza: O(k), gdzie k jest liczbą cyfr w ciągu.

Wyodrębnij liczby z łańcucha za pomocą str.translate() z str.maketrans()

Zdefiniuj ciąg wejściowy, a następnie zainicjuj tabelę tłumaczeń, aby usunąć znaki inne niż numeryczne ul. maketrans() . Używać ul. Tłumaczyć() z tabelą tłumaczeń, aby usunąć znaki inne niż numeryczne z ciągu i zapisać wynik w nowym ciągu o nazwie ciąg_numeryczny . Używać ul. podział() podzielić ciąg_numeryczny na listę słów i zapisz wynik na nowej liście zwanej słowami. Zainicjuj pustą listę zwaną liczbami, aby przechowywać wynikowe liczby całkowite, a następnie wykonaj iterację po każdym słowie na liście słów. Sprawdź, czy słowo jest ciągiem numerycznym, używając ul. isdigit() .Jeśli słowo jest ciągiem liczbowym, przekonwertuj je na liczbę całkowitą za pomocą int() i dołącz go do listy numerów.

Wydrukuj wynikową listę liczb całkowitych.

Poniżej implementacja powyższego podejścia:

Python3




# Define the input string> test_string>=> 'There are 2 apples for 4 persons'> # Print the original string> print>(>'The original string : '> +> test_string)> # Initialize a translation table to remove non-numeric characters> translation_table>=> str>.maketrans('>', '>', '>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!'>#$%&'()*+,-./:;?@[]^_`~')> # Use str.translate() with the translation table to remove non-numeric characters> numeric_string>=> test_string.translate(translation_table)> # Use str.split() to split the string into a list of word> words>=> numeric_string.split()> numbers>=> [>int>(i)>for> i>in> words]> print>(>'The numbers list is : '> +> str>(numbers))>

>

>

Wyjście

The original string : There are 2 apples for 4 persons The numbers list is : [2, 4]>

Złożoność czasowa: O(n), gdzie n jest długością ciągu wejściowego. Metody str.translate() i str.split() zajmują O(n) czasu, a iteracja po każdym słowie na liście słów zajmuje O(k) czasu, gdzie k to liczba słów na liście, które są ciągi numeryczne.
Przestrzeń pomocnicza: O(n), tworząc nowy ciąg znaków i nową listę słów, z których każde ma tę samą długość co ciąg wejściowy, i tworzymy nową listę liczb całkowitych o maksymalnej długości k, gdzie k jest liczbą słowa na liście będące ciągami numerycznymi.

Wyodrębnij liczby z ciągu znaków za pomocą modułu numpy

Zainicjuj ciąg test_string, następnie podziel ciąg na listę słów przy użyciu metody podziału i utwórz plik tępy tablica x z wynikowej listy. Użyj np.char .isnumeryczny aby utworzyć maskę boolowską wskazującą, które elementy x są numeryczne. Użyj tej maski logicznej do indeksowania x i wyodrębniania tylko elementów numerycznych. Przekonwertuj wynikową tablicę ciągów na tablicę liczb całkowitych, używając typ.

Wydrukuj wynikową tablicę liczb całkowitych.

Python3




import> numpy as np> # initializing string> test_string>=> 'There are 2 apples for 4 persons'> # printing original string> print>(>'The original string : '> +> test_string)> # getting numbers from string using numpy> x>=> np.array(test_string.split())> res>=> x[np.char.isnumeric(x)].astype(>int>)> # print result> print>(>'The numbers list is : '> +> str>(res))> #This code is contributed by Vinay Pinjala.>

>

>

Wyjście:

The original string : There are 2 apples for 4 persons The numbers list is : [2 4]>

Złożoność czasowa: O(n), gdzie n jest długością oryginalnego łańcucha test_string. Dzieje się tak, ponieważ metoda split zajmuje O(n) czasu na podzielenie łańcucha na listę słów, a metoda np.char.isnumeric zajmuje O(n) czasu na utworzenie maski logicznej. Pozostałe operacje zajmują stały czas.

Przestrzeń pomocnicza: O(n), gdzie n jest długością oryginalnego łańcucha test_string. Dzieje się tak, ponieważ tworzymy tablicę numpy x do przechowywania słów łańcucha, co zajmuje O(n) miejsca. Przestrzeń używana przez wynikową tablicę liczb całkowitych numpy to także O(n), ponieważ zawiera wszystkie elementy numeryczne ciągu.