Seite 1 von 1
String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Mittwoch 10. November 2021, 23:14
von ergo23
Hallo Zusammen,
ich habe ein kleines "grosses" Problem. Ich muss eine Seriennummer in einer CSV Datei suchen.
Bekannt sind die MAC-Adresse. Diese wird auch ohne Probleme gefunden. Nun muss ich von dieser Position aus nach links die Seriennummer suchen und als Variable speichern.
mac = "nr1mac1"
file = open('SN.csv','r')
ausgelesen = (file.read())
print (ausgelesen)
print (ausgelesen.find(mac))
und hier die Ausgabe:
>>>
Nr,SN,MAC1,MAC2,MAC3
1,123,nr1mac1,nr1mac2,nr1mac3
2,456,nr2mac1,nr2mac2,nr2mac3
3,789,nr3mac1,nr3mac2,nr3mac3
27
>>>
ich bräuchte nun die Seriennummer "123" als String.
Wie kann ich das lösen?
Vielen Dank für Eure Hilfe.
Beste Grüße,
ergo23
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Mittwoch 10. November 2021, 23:26
von __deets__
Indem du die date als CSV Datei behandelst, und mit dem csv-Modul einliest. Und dann Zugriff auf jede Zeile und ihre Elemente hast.
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Mittwoch 10. November 2021, 23:41
von ergo23
Hallo __deets__,
Vielen Dank für Deine Hilfe.
Das habe ich vergeblich nun mehrere Stunden probiert

Ich komm auf keinen Grünen Zweig.
Ich habe das ganze schon als Dictionary eingelesen. Ich versteh nur nicht wie ich nun auf meinen gesuchten Wert komm.
Hast Du vielleicht ein Beispiel für mich?
Gruß
ergo23
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 00:07
von __deets__
Du läufst über alle Zeilen der Datei, und schaust auf den Wert der Mac. Wenn der mir der gesuchten übereinstimmt, gibst du die Spalte mit der Seriennummer zurück.
Code: Alles auswählen
def serial_for_mac(rows, mac):
for row in rows:
if row[MAC_INDEX] == mac:
return row[ROW_INDEX]
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 00:17
von ergo23
Hallo,
leider kann ich damit garnix anfangen. Ich bin der totale Noob

was soll "der" sein? ich versteh das ganze gleich null...
geht das nicht einfacher
Vielen Dank für Deine schnelle Antwort
Gruß
ergo23
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 00:23
von sparrow
Es sind 4 Zeilen Code.
Wie viel einfacher soll es denn werden?
Wo genau hängst du denn?
Was genau eine csv-Datei ist, ist dir klar?
Die verarbeitet mit dem entsprechenden csv Modul. Das hat eine gute
Dokumentation und ganz unten hast du auch Beispiele.
Ich würde trotzdem anfangen oben zu lesen.
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 00:45
von ergo23
Hallo,
Vielen Dank für Deine Antwort. Ich will mich nicht unbedingt auf das CSV versteifen.
Mir würde es ja schon reichen, wenn ich in einem Textfile ab einem bestimmten Index nach links bis zu einem gewissen Zeichen suchen kann.
Ja ich kann die CSV auslesen... OK aber dann steh ich wieder vor dem Problem. Wie komm ich an die Seriennummer... Wahrscheinlich geht das ganz easy. Ich stell mich nur dumm. Ich hab leider nur die Möglichkeit mit Python 2.7 unter UEFI zu arbeiten und kann daher werder Pandas noch sonstiges verweden. Daher suche ich nach einer sehr einfachen Methode.
Beste Grüße
ergo23
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 00:51
von sparrow
Es ist halt eine csv-Datei. Ob du dich nun versteigern willst oder nicht

Python 2.7 ist tot. Und von Pandas hat hier keiner etwas gesagt.
Ich verstehe auch nicht, warum du so verzweifelt weigerst das Modul zu benutzen. Dafür ist es halt da. Alles andere macht es nur unnötig umständlich.
Wie du an die Seriennummer kommst hat dir __deets__ doch oben schon skizziert.
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 08:32
von Manul
ergo23 hat geschrieben: Donnerstag 11. November 2021, 00:17
was soll "der" sein?
Ein Tippfehler für "def".
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 09:02
von __blackjack__
@Manul: Wohl eher nicht. Das ”der” bezieht sich auf „den Wert der Mac“ aus dem Satz davor.
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 09:30
von __deets__
@__blackjack__ ich denke schon, das mein

correct des def der Schuldige war. Hab es mal korrigiert.
@ergo23 Probleme werden nicht beliebig einfach, nur weil man Anfänger ist. Sonst würde ich 747 fliegen. Ohne Vorkenntnisse. Die Nutzung von for-schleifen und Datenstrukturen ist schon notwendig für eigentlich alles.
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 09:36
von Sirius3
@ergo23: für eine Lösung Deines Problems, mußt Du Dein Problem genau beschreiben, damit Du es in eine Computerverständliche Form übersetzen kannst.
Es gibt kein Links oder Rechts für den Computer.
Dein Code versteht der Computer so: lies die ganze Datei als einen Klumpen Zeichen und suche in dem Haufen, ob irgendwo die Zeichenfolge mac vorkommt.
Wenn Du die Datei aber als Klumpen Zeichen verstehst, dann ist Dein Problem sehr gross.
Zum Glück hast Du nicht einen Klumpen Zeichen, sondern eine csv-Datei, die festen Regeln folgt, und nach dem Lesen hast Du eine Liste von Datensätzen mit jeweils 5 Werten. Dich interessiert der erste Wert, wenn der 3, 4 oder 5 Wert einer bestimmten Zeichenfolge entspricht.
Diese Formulierung macht die Umsetzung in Code sehr einfach. Man muß nur das csv-Modul kennen und wissen wie man mit Listen arbeitet.
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 10:50
von DeaD_EyE
Mensch: Befehl -> Prise Salz hinzufügen
Computer: Ich kann damit nichts anfangen
Mensch: Befehl --> 0,8 Gramm Salz hinzufügen
Computer: ???
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Donnerstag 11. November 2021, 11:27
von Sirius3
@DeaD_EyE: warum nicht?
Code: Alles auswählen
PRISE = 0.8g
salz = gewuerzregal.get_by_name('Salz')
topf.add(salz, amount=PRISE)
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Freitag 12. November 2021, 01:02
von ergo23
Hallo Zusammen,
erst mal vielen Dank für so viele Post´s.
Ich habe mich dazu entschlossen, das CSV File als CSV zu verarbeiten und kann dies auch als Liste importieren.
Nun erhalte ich eine Liste in einer Liste. Mein Problem besteht darin, in dieser Liste zu suchen. Da scheitere ich wohl an der Schleife.
Leider hab ich das Beispiel nicht so ganz verstanden. Ich kann mir zwar einzelne Listen anzeigen lassen, und darin ein Element ausgeben lassen, aber nicht in der Liste einer Liste nach diesem Wert suchen.
Vielen Dank nochmals.
Gruß
ergo23
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Freitag 12. November 2021, 01:13
von pillmuncher
@ergo23: Zeig den Code. Ansonsten kann man nur raten und ewig herumdisktieren, was du gemeint haben könntest.
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Freitag 12. November 2021, 01:24
von ergo23
Hallo Zusammen,
erst mal ganz dickes Dankeschön an alle die sich hier die Mühe gemacht haben.
Ich hab jetzt endlich die Lösung. Ich hab vor lauter Bäumen den Wald nicht gesehen und endlich das Beispiel verstanden

Hier noch da Resultat.
Code: Alles auswählen
import csv
mac1 = "0010F374D2AE"
from csv import reader
with open('SN.csv', 'r') as csv_file:
csv_reader = reader(csv_file)
list_of_rows = list(csv_reader)
for row in list_of_rows:
if row[2] == mac1:
print row[1]
Somit könnte man den Thread als erledigt betrachten
Beste Grüße und schönes Wochenende
ergo23
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Freitag 12. November 2021, 06:36
von einfachTobi
Nicht ganz. Der Doku folgend öffnet man csv Dateien immer mit dem newline Argument. Du kannst außerdem direkt über den Reader iterieren:
Code: Alles auswählen
import csv
mac1 = "0010F374D2AE"
with open('SN.csv', 'r', newline='') as csv_file:
for row in csv.reader(csv_file):
if row[2] == mac1:
print row[1]
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Freitag 12. November 2021, 10:37
von __blackjack__
@einfachTobi: Das Argument gibt es in Python 2 nicht. Dort ist es aber wichtig, aus genau dem gleichen Grund, die Datei im Binärmodus zu öffnen.
Code: Alles auswählen
#!/usr/bin/env python2
# coding: utf-8
from __future__ import absolute_import, division, print_function
import csv
def main():
mac = "0010F374D2AE"
with open("SN.csv", "rb") as csv_file:
for row in csv.reader(csv_file):
if row[2] == mac:
print(row[1])
if __name__ == "__main__":
main()
Re: String suchen ab Position nach links bis zu einem Zeichen
Verfasst: Freitag 12. November 2021, 11:16
von einfachTobi
Ups, ich hatte überlesen, dass es um Python 2 geht. Dann ist natürlich dein Code zu verwenden.