logo

Python | Extrahieren Sie Zahlen aus einer Zeichenfolge

Bei der Arbeit mit Zeichenfolgen stoßen wir oft auf das Problem, dass wir alle numerischen Vorkommen ermitteln müssen. Diese Art von Problem tritt im Allgemeinen bei der Wettbewerbsprogrammierung und auch bei der Webentwicklung auf. Lassen Sie uns bestimmte Möglichkeiten besprechen, wie dieses Problem gelöst werden kann Python .

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

Extrahieren Sie Zahlen aus einem String in Python

Nachfolgend sind die Methoden aufgeführt, die wir in diesem Artikel behandeln:



  • Benutzen Listenverständnis Und isdigit() Methode
  • Benutzen re.findall() Methode
  • Benutzen isnumeric() Methode
  • Benutzen Filter() Funktion
  • Verwenden einer Schleife und isdigit() Methode
  • Benutzen str.translate() mit str.maketrans()
  • Benutzen Numpy Modul

Extrahieren Sie Zahlen mithilfe des Listenverständnisses aus einer Zeichenfolge und isdigit() Methode

Dieses Problem kann gelöst werden, indem die Split-Funktion verwendet wird, um eine Zeichenfolge in eine Liste umzuwandeln und dann die Listenverständnis was uns helfen kann, die Liste zu durchlaufen und isdigit Funktion hilft dabei, die Ziffer aus einer Zeichenfolge herauszubekommen.

Python3

Datenbank Java verbinden








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))>

>

>

Ausgabe

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

Zeitkomplexität: O(n), wobei n die Anzahl der Elemente in der Eingabezeichenfolge ist.
Hilfsraum: O(n), wobei n die Anzahl der Zahlen in der Eingabezeichenfolge ist.

Extrahieren Sie eine Ziffer aus einer Zeichenfolge mit re.findall() Methode

Dieses spezielle Problem kann auch mit Python gelöst werden Regex, wir können das nutzen findall-Funktion um mithilfe einer passenden Regex-Zeichenfolge nach numerischen Vorkommen zu suchen.

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))>

>

>

Tische aus Latex
Ausgabe

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

Extrahieren Sie Ganzzahl aus einer Zeichenfolge mit der Methode isnumeric()

In Python haben wir isnumerisch Funktion, die dem Benutzer mitteilen kann, ob ein bestimmtes Element eine Zahl ist oder nicht. Mit dieser Methode können wir die Zahl auch aus einer Zeichenfolge extrahieren.

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))>

>

>

Ausgabe

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

Zeitkomplexität: O(N)
Hilfsraum: O(N)

Extrahieren Sie eine Ziffer aus einer Zeichenfolge mit der Filter()-Funktion

Zuerst definieren wir die Eingabezeichenfolge, drucken dann die Originalzeichenfolge und teilen die Eingabezeichenfolge mithilfe von in eine Liste von Wörtern auf Teilt() Methode. Benutzen Sie die Filter() Funktion zum Herausfiltern nicht numerischer Elemente aus der Liste durch Anwenden von Lambda-Funktion X .isdigit() zu jedem ElementKonvertieren Sie die verbleibenden Elemente in der gefilterten Liste mithilfe eines Listenverständnisses in Ganzzahlen

Drucken Sie die resultierende Liste von Ganzzahlen

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))>

>

>

unveränderliche Liste
Ausgabe

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

Zeitkomplexität: O(n), wobei n die Länge der Eingabezeichenfolge ist. Die Methode split() benötigt O(n) Zeit, um die Eingabezeichenfolge in eine Liste von Wörtern aufzuteilen, und die Funktion filter() benötigt O(n) Zeit, um jedes Element in der Liste zu durchlaufen und die Lambda-Funktion anzuwenden. Das Listenverständnis benötigt O(k) Zeit, wobei k die Anzahl der Elemente in der gefilterten Liste ist, die Ziffern sind, und diese ist normalerweise viel kleiner als n. Daher beträgt die Gesamtzeitkomplexität O(n).

Komplexität des Hilfsraums: O(n), da die Methode „split()“ eine Liste von Wörtern erstellt, die dieselbe Länge wie die Eingabezeichenfolge haben, und die Funktion „filter()“ eine gefilterte Liste erstellt, die bis zu derselben Länge wie die Eingabeliste haben kann. Das Listenverständnis erstellt eine neue Liste von Ganzzahlen, die normalerweise viel kleiner als die Eingabeliste ist, deren Platzkomplexität jedoch im schlimmsten Fall immer noch O(n) beträgt. Daher beträgt die Gesamtkomplexität des Hilfsraums O(n)

Extrahieren Sie Ganzzahl mithilfe einer Schleife und der Methode isdigit() aus einem String

Verwenden Sie eine Schleife, um jedes Zeichen in der Zeichenfolge zu durchlaufen und mithilfe von zu prüfen, ob es sich um eine Ziffer handelt isdigit() Methode. Wenn es sich um eine Ziffer handelt, hängen Sie sie an eine Liste an.

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)>

>

>

Ausgabe

The numbers list is: [2, 4]>

Zeitkomplexität: O(n), wobei n die Länge der Zeichenfolge ist.
Nebenraum: O(k), wobei k die Anzahl der Ziffern in der Zeichenfolge ist.

Extrahieren Sie Zahlen aus einer Zeichenfolge mit str.translate() und str.maketrans()

Definieren Sie die Eingabezeichenfolge und initialisieren Sie dann eine Übersetzungstabelle, um nicht numerische Zeichen zu entfernen str. maketrans() . Verwenden str. übersetzen() mit der Übersetzungstabelle, um nicht numerische Zeichen aus der Zeichenfolge zu entfernen und das Ergebnis in einer neuen Zeichenfolge mit dem Namen zu speichern numerische_Zeichenfolge . Verwenden str. Teilt() die aufteilen numerische_Zeichenfolge in eine Liste von Wörtern und speichern Sie das Ergebnis in einer neuen Liste namens Wörter. Initialisieren Sie eine leere Liste mit dem Namen „Zahlen“, um die resultierenden Ganzzahlen zu speichern, und durchlaufen Sie dann jedes Wort in der Wortliste. Überprüfen Sie mit, ob das Wort eine numerische Zeichenfolge ist str. isdigit() .Wenn das Wort eine numerische Zeichenfolge ist, konvertieren Sie es mit in eine Ganzzahl int() und hängen Sie es an die Zahlenliste an.

Drucken Sie die resultierende Liste von Ganzzahlen.

Pawandeep Rajan

Nachfolgend finden Sie die Umsetzung des oben genannten Ansatzes:

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))>

>

>

Ausgabe

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

Zeitkomplexität: O(n), wobei n die Länge der Eingabezeichenfolge ist. Die Methoden str.translate() und str.split() benötigen O(n) Zeit, und die Iteration über jedes Wort in der Wortliste benötigt O(k) Zeit, wobei k die Anzahl der Wörter in der Liste ist, die vorhanden sind numerische Zeichenfolgen.
Hilfsraum: O(n), während wir eine neue Zeichenfolge und eine neue Liste von Wörtern erstellen, die jeweils dieselbe Länge wie die Eingabezeichenfolge haben, und eine neue Liste von Ganzzahlen mit einer maximalen Länge von k erstellen, wobei k die Anzahl von ist Wörter in der Liste, die numerische Zeichenfolgen sind.

Extrahieren Sie Zahlen aus einer Zeichenfolge mit dem Numpy-Modul

Initialisieren Sie die Zeichenfolge test_string, teilen Sie die Zeichenfolge dann mithilfe der Split-Methode in eine Liste von Wörtern auf und erstellen Sie eine Numpy Array x aus der resultierenden Liste. Verwenden Sie np.char .isnumeric um eine boolesche Maske zu erstellen, die angibt, welche Elemente von x numerisch sind. Verwenden Sie diese boolesche Maske, um x zu indizieren und nur die numerischen Elemente zu extrahieren. Konvertieren Sie das resultierende String-Array mit in ein Array aus Ganzzahlen astyp.

Drucken Sie das resultierende Array von Ganzzahlen.

Python3


String in Ganzzahl in Java umwandeln



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.>

>

>

Ausgabe:

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

Zeitkomplexität: O(n), Dabei ist n die Länge der ursprünglichen Zeichenfolge test_string. Dies liegt daran, dass die Split-Methode O(n) Zeit benötigt, um die Zeichenfolge in eine Liste von Wörtern aufzuteilen, und die Methode np.char.isnumeric O(n) Zeit benötigt, um die boolesche Maske zu erstellen. Die restlichen Vorgänge nehmen konstante Zeit in Anspruch.

Hilfsraum: O(n), Dabei ist n die Länge der ursprünglichen Zeichenfolge test_string. Dies liegt daran, dass wir ein Numpy-Array x erstellen, um die Wörter der Zeichenfolge zu speichern, das O(n) Platz benötigt. Der vom resultierenden Numpy-Array aus Ganzzahlen verwendete Speicherplatz ist ebenfalls O(n), da er alle numerischen Elemente der Zeichenfolge enthält.