Anzeige:
Ergebnis 1 bis 5 von 5

Thema: python3 csv.reader

  1. #1
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.243

    python3 csv.reader

    Ich versuche zwei CSV einzulesen und aus beiden Daten zusammenzusuchen
    Bevor ich das aber machen kann, habe ich die Daten nicht in einer Variable

    - print(type(read_db_log))
    - print(type(read_oms_log))

    ergeben
    Code:
    <class '_csv.reader'>
    <class '_csv.reader'>


    Code:
      with open(tmp_path + '/om_db_output.log') as db_log:
        read_db_log = csv.reader(db_log, delimiter=';')
    
        with open(tmp_path + '/reporting.log') as oms_log:
          read_oms_log = csv.reader(oms_log, delimiter=';')
    
        print(type(read_db_log))
        print(type(read_oms_log))
        for row in read_db_log:
          if (row[0]) == search(read_oms_log[1]):
    
            print(read_oms_log[0],read_oms_log[9], row[0], row[1])
            out_dict.append(read_oms_log[0],read_oms_log[9], row[1])
    Irgendwelche Ideen

    Gruss Stefan
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  2. #2
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.556
    So ganz habe ich Dein Problem nicht verstanden. Aber ich würde schon mal etwas anders an die Sache ran gehen, denn mit...
    Code:
        for row in read_db_log:
          if (row[0]) == search(read_oms_log[1]):
    ...hat Dein Skript eine Komplexität von O(n²). Besser wäre es so: lies erst eine CSV komplett ein und baue daraus einen Hash mit der Spalte als Schlüssel, über die Du die Daten zusammen suchst (z.B. row[0] beim db_log).
    Anschließend liest Du oms_log ein greifst auf den Hash zu um die Daten vom db_log hinzu zu schlüsseln. Damit hast Du nur noch O(n).

    Hilft dir das?
    ¡Nuestro amigo... el Computador!

  3. #3
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.243
    Wenn du mir auch ein Beispiel fuer das Einlesen hast, waere mir sicher auch geholfen

    Gruss Stefan
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  4. #4
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.243
    Hm.. mangels wissen, habe ich mal die beiden Logs line per line in je eine Liste gepackt.
    Jetzt will ich line per line mit einem Wert aus Liste "read_db_log_list" einen Listensatz aus Liste "read_oms_log_list" haben, blos keine Ahnung wie am besten


    Code:
      with open(tmp_path + '/om_db_output.log') as db_log:
        read_db_log = csv.reader(db_log, delimiter=';')
        for row in read_db_log:
          read_db_log_list.append([row[0], row[1]])
    
    
        with open(tmp_path + '/reporting.log', encoding='utf-8') as oms_log:
          read_oms_log = csv.reader(oms_log, delimiter=';')
          for row in read_oms_log:
            read_oms_log_list.append([row[0], row[1], row[9]])
    
        for row in read_db_log_list:
          if (row[0]) == search(read_oms_log[1]):
            print(read_oms_log[0],read_oms_log[9], row[0], row[1])
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  5. #5
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.556
    Mit Python kenne ich mich leider nicht aus. Ich kann's nur halbwegs lesen, weil's sehr intuitiv ist.
    So würde es in Ruby aussehen, was ich meine:
    Code:
    #!/usr/bin/env ruby
    require 'csv'
    
    db  = 'om_db_output.log'
    oms = 'reporting.log'
    
    oms_hash = {}
    CSV.foreach(oms, headers: false, col_sep: ';') do |row|
      oms_hash[row[1]] = { sinnvoller_name1: row[0], noch_einer: row[9] }
    end
    
    CSV.foreach(db,  headers: false, col_sep: ';') do |db_row|
      if oms_hash[row[0]]
        puts join ", ",
          oms_hash[row[0]][:sinnvoller_name1],
          oms_hash[row[0]][:nocheiner],
          db_row[0],
          db_row[1]
      end
    end
    ¡Nuestro amigo... el Computador!

Ähnliche Themen

  1. python3 subprocess falscher Output
    Von Huhn Hur Tu im Forum Linux als Server
    Antworten: 2
    Letzter Beitrag: 02.01.17, 07:16
  2. python3 zip packen
    Von Huhn Hur Tu im Forum Linux als Server
    Antworten: 2
    Letzter Beitrag: 05.12.16, 09:40
  3. Python3 int oder nicht int fu
    Von Huhn Hur Tu im Forum Linux als Server
    Antworten: 13
    Letzter Beitrag: 03.12.16, 00:59
  4. Python3 sftp
    Von Huhn Hur Tu im Forum Linux als Server
    Antworten: 17
    Letzter Beitrag: 21.11.16, 08:33
  5. python3 postgre gibt none zurueck
    Von Huhn Hur Tu im Forum Linux als Server
    Antworten: 3
    Letzter Beitrag: 19.09.16, 08:44

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •