2017-04-22 3 views
1

Ich bin froh, dass ich einen Rat von einigen Experten bekomme, trotzdem versuche ich bestimmte Row-Daten aus einer Textdatei zu extrahieren und sie mit Python 3.6 zu manipulieren. Das TXT-Dateiformat hat 4 verschiedene Spalten: Company, Domain, Ipaddress, Connections:Wie extrahiere ich bestimmte Zeileninformationen aus der Textdatei min, max, median und lösche eine ausgewählte Zeile?

  1. Brandy www.brandy.com 12.12.12.12 245
  2. Whisky www.whiskey.com 24.24.24.24 490
  3. Bourbon www.bourbon.ag 36.36.36.36 980
  4. Wodka www.vodka.ussr 48.48. 48.48 1960

Jetzt möchte ich den Mittelwert, Median, Minimum, Maximum von der letzten Spalte, die 245,490,980,1960 ist ... Ich habe ein bisschen Hilfe von meinem Tutor mit der mittleren Funktion: Was ich verstehe, aber ich habe Schwierigkeit bei der Definition der, wie die min, max, Median ohne importierte Bibliotheken zu schreiben, um die Arbeit für Sie zu tun .. das ist zu wissen, wie der Code funktioniert, ist mein Verständnis des Codes die oberen 5 Zeilen des Codes analysieren den Text file und streift den Leerraum aus und teilt ihn in 4 Spalten auf, die in eine temporäre Zeilenliste geschrieben werden, um an connectionList angehängt zu werden, starte den Zähler bei Null und mache dann eine for -> in Schleife, um eine Variable zu definieren, in die contins konvertiert werden soll eine Ganzzahl an Position 3 in der Zeile und weiter unten Code, um den Mittelwert zu berechnen .... Jetzt ist meine Verwirrung, wie min, Max, Median aus der ConnectionList, mit manuellen Codierung nicht importieren Bibliotheken für die Arbeit für Sie zu tun? ... tut mir leid, dass ich all diese Fragen gestellt habe Ons, ein letzter wie würdest du Zeile 2 löschen und den Leerraum löschen, damit Zeile 1 und 3 keine Lücken in der Textdatei haben ??? Vielen Dank für Ihre Geduld:

searchfile = open("servers.txt", 'r') 
      connectionList = []   
      for line in searchfile: 
       lineList = (line.strip()).split() 
       connectionList.append(lineList) 
       end = 0 
      for x in connectionList: 
       conns = int(x[3]) 
       end += conns 
       mean = end /len(connectionList) 
      print("Mean Value:",mean) 

Antwort

0
lastNumbers = [] # List of all the last numbers. 
for line in searchfile: # Iterate through each line 
    lineList = line.split(".", 50) # Split the line into everything past '.' 
    lastNumber = lineList[len(lineList)-1] # Last aspect of the list. 
    lastNumbers.append(lastNumber) # Add it to the list of last numbers. 

Ich hoffe, das ist die Antwort, die Sie gesucht haben.

+0

Danke..ich werde deinen Code studieren, sehr neu zu diesem Zeug..cheers mocon – mocon

+0

Gut zu hören, dass es hilft, sag mir, ob es noch etwas gibt, was ich tun könnte. –

+0

Die Zeile 'lastNumber = lineList [...]' ist nicht das, was Sie wollen, da dies die Zeile an jedem Dezimalpunkt ('.') Aufteilt. Der ursprüngliche Beitrag teilt die Zeile korrekt in Leerstellen. –

0

Die Python-Standardbibliothek verfügt über zwei Funktionen, min und max, die die minimalen und maximalen Werte in einem Array abrufen. Aber für Lernzwecke möchten Sie wahrscheinlich sehen, wie es auf die harte Tour geht. Sie erstellen zwei Variablen, um die laufenden Min- und Max-Werte zu verfolgen, während Sie durch das Array gehen. Um diese Variablen zu initialisieren, starten Sie sie = None und weisen Sie sie dann der Schleife zu. Sie können alles in einer Schleife tun, indem Sie sowohl die Min- als auch die Max-Werte berechnen.

Der Median ist VIEL schwieriger, und ich schlage vor, Sie betrachten einige Standardalgorithmen. Der einfachste Weg (aber nicht der beste Weg) ist, alle Werte in eine Liste zu setzen, die Liste zu sortieren und das mittlere Element zu verwenden. Aber ohne Bibliotheksfunktionen können Sie das nicht.

Verwandte Themen