Dieses Mal habe ich versucht, die Excel-Suche mit Python zu ermöglichen, daher werde ich sie als Memo einfügen. Ich bin froh, wenn Sie es als Referenz verwenden können.
https://gammasoft.jp/blog/excel-vlookup-by-python/ ↑ Dieses Mal habe ich unter Bezugnahme auf diese Site versucht, unnötige Teile wegzulassen oder zu ändern.
#Modul, das Excel-Dateien bedienen kann
import openpyxl
#Ein Modul, das Listen und Wörterbücher formatieren und anzeigen kann
from pprint import pprint
Dieses Mal verwenden wir openpyxl, mit dem Sie Excel-Dateien bedienen können, und ein leistungsfähiges Modul namens pprint, das die Liste formatiert und anzeigt. Es ist möglich, das auszugeben, was durch Drucken ausgegeben werden kann, ohne pprint einzufügen, aber es ist sehr schwer zu erkennen. Lass uns vergleichen. Ausgabeergebnis bei Verwendung von Druck
[['Ritsuko Akizuki', 'Fairy', 19, 43, '' 6/23 '', '85 / 57/85 ', 156,' Qualifikation, Freiwilliger ',' A '], [' Chihaya Kisaragi ',' Fairy ', 16, 41,' '2/25' ', '72 / 55/78', 162, 'Musik, Fotografie schätzen', 'A'], ['Shiho Kitazawa', 'Fairy', 14, 46, '"1/18"', '83 / 56/84 ', 161,' Finde dein Lieblingsbilderbuch ',' A '], [' Shijo Takane ',' Fairy ', 18, 49 , "1/21", "90 / 62/92", 169, "Astronomische Beobachtung, Geschichte", "B"], ["Julia", "Fee", 16, 43, "9/26" ', '79 / 54/80', 157, 'None', 'O'], ['Shiraishi Tsumugi', 'Fairy', 17, 45, '' 5/29 '', '82 / 56/83 ' , 160, "Garden / Sweet Place Tour", "AB"], ["Momoko Suo", "Fairy", 11, 35, "11/6", "73 / 53/74", 140, "Cute" Siegel sammeln ',' B '], [' Tomoka Tenkubashi ',' Fairy ', 15, 41,' '11/11' ', '80 / 56/79', 156, 'Fans glücklich machen Koto ',' AB '], [' Emi Tokoro ',' Fairy ', 16, 47,' '4/15' ', '88 / 56/85', 159, 'Karaoke', 'O'], [ 'Nagayoshi Akira', 'Fairy', 15, 41, '' 9/20 '', '79 / 59/78 ', 154,' Baseball ',' B '], [' Nikaido Chizuru ',' Fairy ', 21, 50, "10/21", "85 / 58/86", 165, "Check Apparel Magazine at the Cafe", "B"], ["Roko", "Fairy", 15, 42, " 3/1 "', '78 / 57/77', 154, 'Making things', 'AB'], ['Maihama Ayumu', 'Fairy', 19, 49.9, '' 7/23 '', '86 / 60/88 ', 158,' Shopping ',' A '], [' Mizuki Makabe ',' Fairy ', 17, 43,' '1/23' ', '73 / 54/77', 160 , 'Trick', 'B'], ['Iori Minase', 'F. luftig ', 15, 40,' '5/5' ', '77 / 54/79', 153, 'Übersee reisen, auswärts essen', 'AB'], ['Shizuka Mogami', 'Fee', 14, 44, "9/14", "76 / 53/77", 162, "Tennis", "A"], ["Momose Rio", "Fairy", 23, 46, "11/21" , '84 / 57/84 ', 168,' Yoga Exercise ',' A ']]
Ausgabeergebnis bei Verwendung von pprint
[['Ritsuko Akizuki', 'Fee', 19, 43, '' 6/23 '', '85 / 57/85 ', 156,' Qualifikation, Freiwilliger ',' A '], ['Chihaya Kisaragi', 'Fairy', 16, 41, '' 2/25 '', '72 / 55/78 ', 162,' Musik, Fotografie schätzen ',' A '], ['Shiho Kitazawa', 'Fairy', 14, 46, '"1/18"', '83 / 56/84 ', 161,' Finde dein Lieblingsbilderbuch ',' A '], ['Shijo Takane', 'Fairy', 18, 49, '' 1/21 '', '90 / 62/92 ', 169,' Astronomical Observation, History ',' B '], ['Julia', 'Fairy', 16, 43, '' 9/26 '', '79 / 54/80 ', 157,' None ',' O '], ['Shiraishi Tsumugi', 'Fairy', 17, 45, '' 5/29 '', '82 / 56/83 ', 160,' Garden / Sweet Place Tour ',' AB '], ['Momoko Suo', 'Fairy', 11, 35, '"11/6"', '73 / 53/74 ', 140,' Cute Sticker Collection ',' B '], ['Tomoka Tenkubashi', 'Fairy', 15, 41, '"11/11"', '80 / 56/79 ', 156,' Um Fans glücklich zu machen ',' AB '], ['Emi Tokoro', 'Fairy', 16, 47, '' 4/15 '', '88 / 56/85 ', 159,' Karaoke ',' O '], ['Nagayoshi Akira', 'Fairy', 15, 41, '' 9/20 '', '79 / 59/78 ', 154,' Baseball ',' B '], ["Nikaido Chizuru", "Fairy", 21, 50, "10/21", "85 / 58/86", 165, "Check Apparel Magazine at Cafe", "B"], ['Loko', 'Fairy', 15, 42, '3/1', '78 / 57/77 ', 154,' Making things ',' AB '], ['Ayumu Maihama', 'Fairy', 19, 49.9, '' 7/23 '', '86 / 60/88 ', 158,' Shopping ',' A '], ['Mizuki Makabe', 'Fairy', 17, 43, '' 1/23 '', '73 / 54/77 ', 160,' Trick ',' B '], ['Iori Minase', 'Fairy', 15, 40, '' 5/5 '', '77 / 54/79 ', 153,' Übersee-Reisen, Essen gehen ',' AB '], ['Shizuka Mogami', 'Fairy', 14, 44, '' 9/14 '', '76 / 53/77 ', 162,' Tennis ',' A '], ['Momose Rio', 'Fairy', 23, 46, '11 / 21 ', '84 / 57/84', 168, 'Yoga Exercise', 'A']]
Natürlich müssen Sie nur die Daten ausgeben! In einer solchen Situation ist das Drucken ausreichend, aber dieses Mal lautet der Zweck "Ich möchte suchen" und "Ich möchte die Liste, die dem Suchinhalt entspricht, leicht sehen", daher verwende ich pprint.
Da der Zweck dieser Zeit darin besteht, die Excel-Datei zu durchsuchen, müssen die Originaldaten gelesen werden.
#Geben Sie den Dateipfad an und laden Sie ihn. Vom Dateipfad"\"Wird als Escape-Zeichen interpretiert"r"Um Fehler durch Präfixe zu vermeiden, um ein Entkommen zu verhindern.
wb = openpyxl.load_workbook(r"C:\Users\(Wo die Datei ist)\Idolmastermillionlive_data.xlsx")
#Geben Sie die Indexnummer des zu lesenden Arbeitsblatts an. Zahlen beginnen bei 0.
ws = wb.worksheets[0]
character_list = []
for row in ws["A2:I53"]:
values = []
for col in row:
values.append(col.value)
character_list.append(values)
In der zweiten Zeile wird Openpyxl aufgefordert, die Datei zu lesen, nach der Sie diesmal suchen möchten. Der Inhalt von () ist der Pfad. Wenn Sie jedoch nicht vorsichtig sind, wird die Fehlermeldung "Unicode-Escape-Codec kann Bytes an Position 2-3 nicht dekodieren: abgeschnittenes \ UXXXXXXXX-Escape" angezeigt. Ich habe die Bedeutung des Fehlers nicht verstanden, weil der Pfad korrekt war und die Zeichen nicht fehlerhaft waren. Dieser Fehler trat auf, als der Computer das Trennzeichen "" als "Escape-Zeichen" bei der Angabe des Pfads missverstand. Also habe ich das Rohzeichen verwendet, um dieses Escape-Zeichen abzubrechen. Das ist richtig, das "r" vor dem Weg. Es ist kein Tippfehler.
Hoppla, Sie haben etwas in die for-Anweisung darunter geschrieben. Es bedeutet, eine Liste des angegebenen Zellbereichs zu lesen, vertikal zu verarbeiten und in eine leere Liste mit dem Namen values einzufügen.
Mit einem Bild erklären
Ich möchte zuerst diesen Bereich durchsuchen, daher habe ich die Zelle angegeben, die hier gelesen werden soll. In diesem Fall habe ich von Nr. 2 von A bis Zelle 53 von I angegeben (da der obere Titel nicht erforderlich ist). Wie auf der oben genannten Referenzseite erwähnt, ist diese Spezifikation in Ordnung, solange kein Datenverlust auftritt. Wenn jedoch die Daten fehlen, ist ein anderer Prozess erforderlich. Aber das ist eine andere Gelegenheit.
Also diesmal Wir haben sie gebeten, vertikal als Gruppe horizontal zu lesen. Und schließlich werden die Wertedaten, die die Daten jeder Person als Liste enthalten, in eine leere Variable namens "character_list" eingefügt. ~~ FOO ^ ~! Es fühlt sich gut an! ~~
Lassen Sie uns den Suchteil machen, auf den alle gewartet haben.
#Endlosschleifenausführung
while True:
settargets = input("Welche der "Attribute", "Namen", "Größe", "3 Größen", "Geburtstag", "Alter", "Hobby", "Blutgruppe" und "Gewicht" sollten gesucht werden?:")
#Die Suche beginnt basierend auf dem in festgelegten Zielen eingegebenen Wert
if settargets == "Attribut":
attribute = input("Fairy,Princess,Geben Sie das Attribut mit einem der Engel ein:")
#Extrahieren Sie die Zeilen, die den Bedingungen und Attributen entsprechen_Liste einfügen
attribute_list = [d for d in character_list if d[1] == attribute]
#Ergebnisanzeige
pprint(attribute_list)
#Bestätigen Sie, ob Sie die Suche fortsetzen möchten
cont = input("Möchten Sie die Suche fortsetzen?(Y/N):")
if cont == "Y" or cont == "y":
continue
elif cont == "N" or cont == "n":
break
else:
continue
#Führen Sie den folgenden Vorgang aus
if settargets == "Name":
name = input("Bitte geben Sie Ihren Namen ein:")
name_list = [d for d in character_list if d[0] == name]
pprint(name_list)
cont = input("Möchten Sie die Suche fortsetzen?(Y/N):")
if cont == "Y" or cont =="y":
continue
elif cont == "N" or cont == "n":
break
else:
continue
if settargets == "Höhe":
hight = input("Bitte geben Sie Ihre Größe ein:")
hight_list = [d for d in character_list if d[6] == hight]
pprint(hight_list)
cont = input("Möchten Sie die Suche fortsetzen?(Y/N):")
if cont =="Y" or cont == "y":
continue
elif cont == "N" or cont == "n":
break
else:
continue
if settargets == "3 Größen":
threesize = input("3 Bitte geben Sie die Größe ein:")
threesize_list = [d for d in character_list if d[5] == threesize]
pprint(threesize_list)
cont = input("Möchten Sie die Suche fortsetzen?(Y/N):")
if cont == "Y" or cont == "y":
continue
elif cont == "N" or cont == "n":
break
else:
continue
if settargets =="Geburtstag":
birthday = input("Bitte geben Sie Ihr Geburtsdatum ein:")
birthday_list = [d for d in character_list if d[4] == birthday]
pprint(birthday_list)
cont = input("Möchten Sie die Suche fortsetzen?(Y/N):")
if cont == "Y" or cont == "y":
continue
elif cont == "N" or cont == "n":
break
else:
continue
if settargets == "Alter":
age = input("Bitte geben sie ihr alter ein:")
age_list = [d for d in character_list if d[2] == age]
pprint(age_list)
cont = input("Möchten Sie die Suche fortsetzen?(Y/N):")
if cont == "Y" or cont == "y":
continue
elif cont == "N" or cont =="n":
break
else:
continue
if settargets == "Hobby":
hobby = input("Bitte geben Sie Ihr Hobby ein:")
hobby_list = [d for d in character_list if d[7] == hobby]
pprint(hobby_list)
cont = input("Möchten Sie die Suche fortsetzen?(Y/N):")
if cont == "Y" or cont == "y":
continue
elif cont == "N" or cont == "n":
break
else:
continue
if settargets == "Blutgruppe":
bloodtype = input("Bitte geben Sie Ihren Namen ein:")
bloodtype_list = [d for d in character_list if d[8] == bloodtype]
pprint(bloodtype_list)
cont = input("Möchten Sie die Suche fortsetzen?(Y/N):")
if cont == "Y" or cont =="y":
continue
elif cont == "N" or cont == "n":
break
else:
continue
if settargets == "Körpergewicht":
weight = input("Bitte geben Sie Ihr Gewicht ein:")
weight_list = [d for d in character_list if d[3] == weight]
pprint(weight_list)
cont = input("Möchten Sie die Suche fortsetzen?(Y/N):")
if cont == "Y" or cont == "y":
continue
elif cont == "N" or cont =="n":
break
else:
continue
else:
print('Bitte ändern Sie das Schlüsselwort und versuchen Sie es erneut.(Beispiel:Geburtstag 29. Dezember →"12/29")')
break
Es ist lange her, aber sobald Sie es geschrieben haben, müssen Sie nur so viel kopieren und einfügen, wie Sie benötigen, damit es einfach ist. Dieses Mal wollte ich so oft suchen können, wie ich wollte, also entschied ich mich für eine Endlosschleife.
Wenn Sie zu Beginn Ziele festlegen, wird der Benutzer zunächst gefragt, nach welchen Daten Sie suchen möchten. Anschließend wird die Suche basierend auf den Suchbedingungen durchgeführt, die von den festgelegten Zielen angegeben werden. Wenn Sie beispielsweise im ersten Block nach "Attribut" suchen möchten, fragen Sie "Welches Attribut-Idol möchten Sie sehen" und geben Sie das Ergebnis in das Attribut ein. Danach wird angewiesen, "attribute_list, das dasselbe Attribut (vom Benutzer eingegebenes Attribut) wie das an erster Stelle der Daten hat, in die Liste aufzunehmen. Die erste der Daten ist
Es ist hier. Wenn Sie es normal zählen, ist es das zweite. Bitten Sie daher alle Daten, zu sehen, ob "die zweite (erste) der Daten mit dem angegebenen Zeichen übereinstimmt?". Übrigens heißt die Art und Weise, wie die for-Anweisung in dieser Liste enthalten ist, "List Inclusion Notation", aber ich dachte, dass sie geschrieben werden könnte, selbst wenn sie normal getrennt wäre, aber ich habe einen Fehler erhalten und bin fortgefahren. Ich hatte es nicht, also musste ich es mit der Listeneinschlussnotation machen. Ich erinnere mich, dass der Fehler, der zu diesem Zeitpunkt auftrat, so etwas wie "Int-Typ-Daten können nicht dekoriert werden!" War. Ich habe verschiedene Dinge ausprobiert, aber aus irgendeinem Grund habe ich diesen Fehler erhalten und konnte ihn nicht lösen.
Die resultierenden "Daten, die die Bedingungen erfüllen" werden angezeigt. Danach fragte ich: "Möchten Sie danach weiter suchen?" Es ist so einfach wie Y einzugeben, um fortzufahren, N einzugeben, um zu unterbrechen, und selbst wenn ein anderes Zeichen eingegeben wird, aber es war sehr praktisch.
Es ist scharf, wenn Sie es machen, aber wenn Sie anfangen, es zu benutzen, können Sie Zeit sparen und E fühlen! Ich möchte eine Site, die Profilsuche auch offiziell durchführen kann ... aber es kann sein, dass () Nun, ich bin schon müde, also hier. Baicha.
Recommended Posts