IQ Bot Custom Logic (Python): Effizienter Ersetzungsprozess in einer Schleife

Dieser Artikel erläutert, wie Sie die Effizienz durch die Verwendung von Ausschlussverarbeitungsschleifen in IQ Bot verbessern können.

Ausschluss ist eine Art Ersatz, daher ist die Idee im Grunde die gleiche, aber ich denke, dass der Ersatz in Bezug auf die Codierung wahrscheinlich etwas schwieriger ist, also habe ich ihn hier herausgeschnitten.

Wann ist es sinnvoll? ~ Ersatz ~

Im Fall der Verarbeitung des Ersatzes in einer Schleife ist die häufigste Begegnung die "Ausrichtung von Kana halber Breite". ABBYY, eine der in IQ Bot integrierten OCR-Engines, neigt dazu, Kana mit halber Breite etwas schwach zu lesen.

Wenn Sie nur die halbe Breite in voller Breite lesen möchten (oder umgekehrt), können Sie dies auf der RPA-Seite mit der japanischen Konvertierungsaktion für halbe Breite ⇔ volle Breite im Bot Store korrigieren, aber "ga" wird in "ka" geändert. Es gibt Fälle, in denen es wie "(ka + doppeltes Anführungszeichen)" gelesen wird, und ich denke, es ist schneller, dies mit Python zu tun, als es mit RPA richtig zu machen.

(Obwohl Sie Python mit RPA schreiben können)

Unterschied zwischen Ausschluss und Ersatz

Der Unterschied zwischen Ausschluss und Ersetzung ist in Bezug auf die Feldelementlogik wie folgt.

Unterschied zwischen Ausschluss und Ersatz


#Dies ist ausgeschlossen
field_value = field_value.replace("Zu ausschließende Zeichenfolge","")
#Dies ist der Ersatz
field_value = field_value.replace("Zeichenfolge vor dem Ersetzen","Zeichenkette nach dem Ersetzen")

Die grundlegende Grammatik ist "Ersetzen", und der Ausschluss wird realisiert, indem die "Zeichenfolge nach dem Ersetzen" durch "" "(= leere Zeichenfolge) ersetzt wird.

Im Falle eines Ausschlusses wurde die Zeichenfolge nach dem Ersetzen immer auf "" festgelegt, sodass die einzigen Elemente "auszuschließende Zeichenfolge" (= Zeichenfolge vor dem Ersetzen) waren. Die zu schleifende Sequenz stimmte also mit der Struktur des primären Arrays überein.

Auf der anderen Seite gibt es im Falle eines Austauschs mehrere vor und nach dem Austausch, so dass es notwendig ist, vor und nach dem Austausch in der Sequenz als Satz zu setzen. Die Struktur des sekundären Arrays.

Dies ist der UP-Punkt des Schwierigkeitsgrades.

Aber mach dir keine Sorgen. Ja ... Nein, ich werde es richtig erklären.

Wie es geht (im Falle eines Ersatzes)

Der Austauschvorgang wird mit der folgenden Struktur abgeschlossen.

Konzept der Ersatzbearbeitung


replace_list = (("Zeichenfolge vor dem Ersetzen 1","Zeichenkette nach Ersetzung 1"),
               ("Zeichenfolge vor dem Ersetzen 2","Zeichenkette nach Ersetzung 2"),
               ("Zeichenfolge vor dem Ersetzen 3","Zeichenkette nach Ersetzung 3"))

for i in replace_list:
    field_value = field_value.replace(i[0],i[1])

replace_list hat ein Taple im Tapple, das heißt, es hat eine quadratische Array-Struktur.

Im "i" in der for-Schleife "(" Zeichenkette vor Ersetzung 1 "," Zeichenkette nach Ersetzung 1 ")" für die erste Verarbeitung, "(" "für die zweite Verarbeitung Das untergeordnete Taple wird als Zeichenfolge vor dem Ersetzen 2 "," Zeichenfolge nach dem Ersetzen 2 ")` eingegeben.

Der Mechanismus besteht darin, dass die Elemente des Index 0 ("i [0]" / vor dem Ersetzen) und 1 ("i [1]" / nach dem Ersetzen) aus dem "i" herausgenommen und an das Argument "ersetzen" übergeben werden. ..

Kana-Ausrichtungsverarbeitung mit halber Breite

Übrigens ist die im Beispiel am Anfang angegebene Korrekturlogik von Kana halber Breite ein solches Bild.

Austauschverfahren für Kana halber Breite


replace_list = (('Leistung"','Ga'),('Ki"','Gi'),('Ku"','Gu'),('Ke"','Ge'),('Ko"','Gehen'),
               ('Bedienung"','Das'),('Shi"','Das'),('Su"','Zu'),('Se"','Ze'),('Damit"','Zo'),
               ('Ta"','Da'),('Ji"','Di'),('Tsu"','Zu'),('Te"','De'),('Zu"','Machen'),
               ('C."','Ba'),('Hallo"','Bi'),('Fu"','Bu'),('F."','Sein'),('E."','Bo'),
               ('Ha °','Pa'),('Hi °','Pi'),('F °','Pu'),('F °','Sport'),('Ho °','Po'))

for i in replace_list:
    field_value = field_value.replace(i[0],i[1])

Unter der Annahme, dass der Trübungspunkt als "" (doppeltes Anführungszeichen) und der Halbtrübungspunkt als "°" (Grad) gelesen wird, handelt es sich um einen Prozess der Ausrichtung auf Kana voller Breite.

In der Realität schwankt das Ablesen von trüben Punkten und halbtrüben Punkten oft etwas stärker.

Es ist effizient, diesen Prozess anzuwenden, nachdem die Leseergebnisse von Trübungspunkten und Halbtrübungspunkten durch normale Ersatzverarbeitung unter Berücksichtigung der OCR-Ergebnisse vereinheitlicht wurden.

Was ist mit einem Tisch? (Ersatz)

Im Fall einer Tabelle können Sie den Inhalt der for-Schleife für die Tabelle ändern, sodass dies wie folgt funktionieren sollte.

Ersetzungsprozess (für Tabellen)


replace_list = (("Zeichenfolge vor dem Ersetzen 1","Zeichenkette nach Ersetzung 1"),
               ("Zeichenfolge vor dem Ersetzen 2","Zeichenkette nach Ersetzung 2"),
               ("Zeichenfolge vor dem Ersetzen 3","Zeichenkette nach Ersetzung 3"))

for i in replace_list:
    df['Spaltenname'] = df['Spaltenname'].str.replace(i[0],i[1])

Aber das obige ist nicht sehr schön ... Bin ich der einzige, der sich fühlt?

Ich würde das tun.

Ersetzungsprozess (für Tabellen)



replace_list = (("Zeichenfolge vor dem Ersetzen 1","Zeichenkette nach Ersetzung 1"),
               ("Zeichenfolge vor dem Ersetzen 2","Zeichenkette nach Ersetzung 2"),
               ("Zeichenfolge vor dem Ersetzen 3","Zeichenkette nach Ersetzung 3"))

def table_replace(x,y):
    for i in y:
        x = x.y(i[0],i[1])
    return x

df['Spaltenname'] = df['Spaltenname'].apply(table_replace,y=replace_list)

Wenn du das tust

--Wenn Sie dieselbe Kombination von zu ersetzenden Zeichenfolgen anwenden möchten, jedoch auf verschiedene Spalten --Wenn Sie die Kombination der Zeichenfolgen ändern möchten, die Sie je nach Spalte ersetzen möchten

Auf solche Fälle kann flexibel reagiert werden.

Ersetzungsprozess (für Tabellen)



replace_listA = (("Zeichenfolge vor dem Ersetzen 1","Zeichenkette nach Ersetzung 1"),
               ("Zeichenfolge vor dem Ersetzen 2","Zeichenkette nach Ersetzung 2"),
               ("Zeichenfolge vor dem Ersetzen 3","Zeichenkette nach Ersetzung 3"))

replace_listB = (("Zeichenfolge vor dem Ersetzen a","Zeichenfolge nach Ersetzung a"),
               ("Zeichenfolge vor dem Ersetzen b","Zeichenfolge nach Ersetzung b"),
               ("Zeichenfolge vor dem Ersetzen c","Zeichenfolge nach Ersetzung c"))


def table_replace(x,y):
    for i in y:
        x = x.y(i[0],i[1])
    return x

df['Spaltenname 1'] = df['Spaltenname 1'].apply(table_replace,y=replace_listA)
df['Spaltenname 1'] = df['Spaltenname 1'].apply(table_replace,y=replace_listB)
df['Spaltenname 2'] = df['Spaltenname 2'].apply(table_replace,y=replace_listA)
df['Spaltenname 3'] = df['Spaltenname 3'].apply(table_replace,y=replace_listB)

Es ist der Punkt.

Wenden Sie sowohl die Ersetzungen "replace_listA" als auch "replace_listB" auf den Spaltennamen 1 an Nur Ersetzen durch replace_listA wird auf Spaltenname 2 angewendet Dies ist ein Beispiel, in dem nur die Ersetzung durch "replace_listB" auf den Spaltennamen 3 angewendet wird.

das ist alles!

Hmmm, war es nicht schwierig?

Wenn Sie Fragen haben, hinterlassen Sie bitte einen Kommentar zu diesem Artikel oder kontaktieren Sie uns über DM auf Twitter.

Recommended Posts

IQ Bot Custom Logic (Python): Optimieren Sie die Ersetzungsverarbeitung in einer Schleife
IQ Bot Custom Logic (Python): Effizienter Ersetzungsprozess in einer Schleife
IQ Bot Custom Logic (Python): Optimieren Sie Ausschlüsse in Schleifen
IQ Bot Custom Logic Basic Key
IQ Bot Custom Logic: Festwertzuweisung
Zusammenfassung der benutzerdefinierten logikbezogenen Verarbeitung von IQ Bot
Umschreiben von Elementen in einer Listenschleife (Python)
Verwenden Sie eine benutzerdefinierte Fehlerseite mit Python / Tornado
Erstellen Sie in KiCad ein Rahmenantennenmuster in Python
Erstellen Sie mit Selenium einen Datenerfassungsbot in Python
Benutzerdefinierte Sortierung in Python3
Ich habe einen Vim-ähnlichen Ersetzungsbefehl in Slackbot #Python implementiert
Durchlaufen Sie einen Generator, der einen Datumsiterator in Python zurückgibt
IQ Bot Custom Logic: Korrektur gängiger Lesegewohnheiten an Daten
Machen Sie einen Screenshot in Python
Erstellen Sie ein Wörterbuch in Python
Erstellen Sie ein Lesezeichen in Python
Zeichne ein Herz in Python
Einfach! Implementieren Sie einen Twitter-Bot, der auf Heroku in Python ausgeführt wird
Über psd-tools, eine Bibliothek, die psd-Dateien in Python verarbeiten kann
Benutzerdefinierte IQ Bot-Logik: Löschen Sie die letzten n Zeilen der Tabelle
Schreiben Sie eine Dichotomie in Python
Drücken Sie einen Befehl in Python (Windows)
Erstellen Sie einen DI-Container mit Python
Zeichnen Sie eine Streudiagrammmatrix mit Python
ABC166 in Python A ~ C Problem
Behandeln Sie Anfragen in einem separaten Prozess
Erstellen Sie eine Binärdatei in Python
Löse ABC036 A ~ C mit Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Implementierung eines einfachen Algorithmus in Python 2
Löse ABC037 A ~ C mit Python
Führen Sie einen einfachen Algorithmus in Python aus
Zeichnen Sie ein CNN-Diagramm in Python
Erstellen Sie eine zufällige Zeichenfolge in Python
Einfache Gacha-Logik in Python geschrieben
Beim Schreiben eines Programms in Python
Benutzerdefiniertes Zustandsraummodell in Python
Erstellen Sie mit Django einen LINE-Bot
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
Schreiben Sie einen einfachen kopflosen Web-Scraping-Bot in Python mit Beautiful Soup 4
Benutzerdefinierte IQ Bot-Logik: Geteilte Anwendung (Auf Tabelle anwenden, Fehlerkontrolle einschließen)
IQ Bot Custom Logic: 5 Dinge, die Sie möglicherweise überraschen, wenn jemand, der eine andere Sprache spricht, Python zum ersten Mal berührt