dedlfix: Python - Syntax error bei open()

Beitrag lesen

Tach!

Funktionieren tuts also, aber findest du den Code sinnvoll? Oder gibts da noch Optimierungsspielraum:
    if line.strip() != "":

Den Vergleich mit dem Leerstring kann man weglassen. Im booleschen Kontext liefert ein Leerstring false, alle andere true.

  curset = { 'ea': curline[0].strip(),  
  'okz': curline[1].strip(),  
  'k': int(curline[2].strip()),  
  'v': int(curline[3].strip()) }  
  data.append(curset);  

curset ist ersetzbar, indem du die Dictionary-Erzeugung als Parameter von data.append() notierst. Aber du kannst das auch ruhig so lassen, die eine Variable macht das Kraut nicht fett. Ich würde das jedoch optisch anders notieren.

curset = {
    'ea': curline[0].strip(),
    'okz': curline[1].strip(),
    'k': int(curline[2].strip()),
    'v': int(curline[3].strip()),
  }

Beachte auch das letzte Komma. Das fügt wie in PHP kein (leeres) Element mehr an, aber beim Umsortieren und Erweitern muss man sich nicht mehr darum kümmern, wo nun noch Kommas zu korrigieren sind.

Eine Frage noch: Die Integer-Parse-Funktion wirft in meinem Fall keinen Error, da die Werte alle umgeformt werden können. Aber generell: gibt es eine Art ternären Operator mit dem man direkt vor der Zuweisung prüfen kann, ob int() überhaupt möglich ist und andernfalls 0 übergeben? Ich habe nichts gefunden was mir dahingehend hilft.

Ich suche in solchen Fälle nach "python" und dem Namen einer PHP-Funktion mit gleichem Umfang, in dem Fall "is_numeric" => str.isdigit()
Andere Sprachen gehen natürlich auch, wie C#'s tryparse.

Ich habe nur dieses Statement gefunden, welches aber trotzdem zum Abbruch des Programms führt, wenn die int()-Funktion eine Exception wirft.

Exceptions kann man auch nur in einem try-except-Statement fangen.

dedlfix.