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
String suchen ab Position nach links bis zu einem Zeichen
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
Vielen Dank für Deine Hilfe.
Das habe ich vergeblich nun mehrere Stunden probiert

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
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]
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.
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.
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
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
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.
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.
- __blackjack__
- User
- Beiträge: 14077
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Manul: Wohl eher nicht. Das ”der” bezieht sich auf „den Wert der Mac“ aus dem Satz davor.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
@__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.
@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.
@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.
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.
- DeaD_EyE
- User
- Beiträge: 1244
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Mensch: Befehl -> Prise Salz hinzufügen
Computer: Ich kann damit nichts anfangen
Mensch: Befehl --> 0,8 Gramm Salz hinzufügen
Computer: ???
Computer: Ich kann damit nichts anfangen
Mensch: Befehl --> 0,8 Gramm Salz hinzufügen
Computer: ???
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
@DeaD_EyE: warum nicht?
Code: Alles auswählen
PRISE = 0.8g
salz = gewuerzregal.get_by_name('Salz')
topf.add(salz, amount=PRISE)
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
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
- pillmuncher
- User
- Beiträge: 1530
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@ergo23: Zeig den Code. Ansonsten kann man nur raten und ewig herumdisktieren, was du gemeint haben könntest.
In specifications, Murphy's Law supersedes Ohm's.
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.
Somit könnte man den Thread als erledigt betrachten 
Beste Grüße und schönes Wochenende
ergo23
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]

Beste Grüße und schönes Wochenende
ergo23
-
- User
- Beiträge: 512
- Registriert: Mittwoch 13. November 2019, 08:38
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]
- __blackjack__
- User
- Beiträge: 14077
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
-
- User
- Beiträge: 512
- Registriert: Mittwoch 13. November 2019, 08:38
Ups, ich hatte überlesen, dass es um Python 2 geht. Dann ist natürlich dein Code zu verwenden.