Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Programm zum Extrahieren von Raster-Matching-Strings

Python-Programm zum Extrahieren von Raster-Matching-Strings

WBOY
WBOYnach vorne
2023-09-09 22:21:09790Durchsuche

Python-Programm zum Extrahieren von Raster-Matching-Strings

Mustererkennung ist ein wichtiges Programmierkonzept. Es ermöglicht uns, bestimmte Daten abzurufen, die bestimmte Bedingungen erfüllen oder einer bestimmten Reihenfolge entsprechen. Dieses Prinzip ist in verschiedenen Bereichen wie Sprache und Bildverarbeitung hilfreich. Der String-Abgleich hilft uns, aus großen Datenmengen aussagekräftige Informationen zu extrahieren.

In diesem Artikel besprechen wir das ähnliche Konzept des Extrahierens von Grid-MatchingStrings aus einer gegebenen Liste von Strings. Der Schwerpunkt des Rasterabgleichs liegt auf dem Extrahieren von „ähnlichen“ Zeichenfolgen gleicher Länge. Lassen Sie uns dieses Problem im Detail besprechen.

Das Problem verstehen

Das Hauptkonzept besteht darin, ähnliche Zeichenfolgen zu extrahieren, die einem bestimmten Muster folgen. Die Rasterzeichenfolge enthält fehlende Zeichen und diejenigen, die dem verborgenen Muster des Rasters entsprechen, sollten extrahiert werden. Lassen Sie uns dies anhand eines Beispiels verstehen -

Eingabe- und Ausgabeszenarien

Input:
lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"

Das Raster enthält die Buchstaben „

e“ und „h“ sowie einige fehlende Zeichen, die ein Muster bilden. Wir müssen die zum Rastermuster passende Zeichenfolge aus der Liste extrahieren.

Output: ['Suresh', 'Ramesh']

Anscheinend stimmen die Wörter „

Suresh“ und „Ramesh“ mit dem Gittermuster überein. Nachdem wir nun die Problemstellung verstanden haben, besprechen wir einige Lösungen.

Iteration mit Zip() verwenden

Nachdem wir die String-Liste und das Rastermuster übergeben haben, erstellen wir eine leere Liste, um die extrahierten Strings zu speichern. Wir verwenden eine „for“-Schleife, um jede Zeichenfolge zu durchlaufen und eine Bedingung innerhalb der Schleife zu erstellen, um zu prüfen, ob die Länge des aktuellen „

String“ (Wortes) gleich der Länge dieser Zeichenfolge ist. netto.

Dadurch können wir relevante Zeichenfolgen für den Rasterabgleich auswählen. Die Bedingung prüft auch, ob das Zeichen im Raster „

unterstrichen“ ist oder mit dem entsprechenden Zeichen im Wort übereinstimmt.

Anhand dieser beiden Bedingungen extrahieren wir Wörter, die dem Rastermuster entsprechen. Wenn sowohl die Zeichenfolge als auch ihre Zeichen die Bedingung erfüllen, wird die Funktion

zip() verwendet, um die Zeichen in „mesh“ zu iterieren und mit den Zeichen in „“ zu paaren. Diese Funktion ermöglicht paarweise Vergleiche beider Muster Beispiel

Hier ist ein Beispiel für das Extrahieren einer Rasterübereinstimmungszeichenfolge –

lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
lis2 = []
print(f"The original list is: {lis1}")

for words in lis1:
   if (len(words) == len(mesh)) and all((letter1 == "_") or (letter1 == letter2)
      for letter1, letter2 in zip(mesh, words)):
         lis2.append(words)

print(f"The new list is: {lis2}")

Ausgabe

The original list is: ['Suresh', 'Ramesh', 'Ravi', 'Raghav']
The new list is: ['Suresh', 'Ramesh']

Verwenden Sie das Listenverständnis

Bei diesem Ansatz verwenden wir Listenverständnistechniken, um detaillierten und kompakten Code zu generieren. Das mehrzeilige Konzept der Iteration lässt sich in wenigen Codezeilen zusammenfassen.

Diese kompakte Darstellung verbessert die Lesbarkeit des Programms. Wir verwenden dieselbe Logik, um Bedingungen festzulegen und Werte zu trennen, die die Kriterien erfüllen. Auf Listen werden sowohl „for“- als auch „if“-Schleifen angewendet. Vergleichen und ordnen Sie jedes Zeichen mit Hilfe der Funktion

zip()

zu. Beispiel

Hier ist ein Beispiel -

lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
print(f"The original list is:{lis1}")

lis2 = [words for words in lis1 if (len(words) == len(mesh)) and all((letter1 == "_") or (letter1 == letter2)
           for letter1, letter2 in zip(mesh, words))]

print(f"The new list is: {lis2}")

Ausgabe

The original list is:['Suresh', 'Ramesh', 'Ravi', 'Raghav']
The new list is: ['Suresh', 'Ramesh']

Verwenden Sie die Funktion Filter() + Lambda()

Mit der Filterfunktion können Werte nach bestimmten Kriterien gefiltert werden. Nachdem wir das Rastermuster und die Liste der Zeichenfolgen bereitgestellt haben, erstellen wir mithilfe der Funktionen

filter()

und lambda eine neue Liste. Die Filterfunktion filtert nicht übereinstimmende Zeichenfolgen heraus und definiert darin eine Lambda-Funktion, die die Länge beider Muster überprüft. Die Funktion

zip()

wird zum Vergleichen und Abgleichen von Zeichen verwendet. Die Filterkriterien werden von der Lambda-Funktion bereitgestellt. Beispiel

Hier ist ein Beispiel -

lis1 = ["Suresh", "Ramesh", "Ravi", "Raghav"]
mesh = "___e_h"
print(f"The original list is:{lis1}")

lis2 = list(filter(lambda words: len(words) == len(mesh) and all((letter1 == "_") or (letter1 == letter2)
   for letter1, letter2 in zip(mesh, words)), lis1))
print(f"The new list is: {lis2}")

Ausgabe

The original list is:['Suresh', 'Ramesh', 'Ravi', 'Raghav']
The new list is: ['Suresh', 'Ramesh']

Wertvolle Erkenntnisse

Alle oben besprochenen Lösungen folgen einem Grundprinzip: Um Zeichenfolgen- und Rastermuster vergleichen zu können, sollten ihre Längen gleich sein, d. h. Zeichenfolge und Raster sollten die gleiche Anzahl an Zeichen haben. Wenn sich außerdem die Position der Unterstreichung ändert, ändert sich auch die Mustererkennung.

Fazit

In diesem Artikel haben wir einige umfassende und effiziente Lösungen zum Extrahieren von

Grid

passenden Zeichenfolgen besprochen. Zunächst konzentrierten wir uns auf das Verständnis des Konzepts der Rasteranpassung und stellten später Lösungen vor. Wir haben viele Programmierkonzepte angewendet, darunter „Iteration“, „Listenverständnis“, „filter()“ und „Lambda-Funktion“ b>“, um unsere Ziele zu erreichen.

Das obige ist der detaillierte Inhalt vonPython-Programm zum Extrahieren von Raster-Matching-Strings. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen