code: def parse_exchange_table_file(f):
      
  
      for line in f:
          line, _, comment = line.partition('#')
          line = line.strip()
          if line == '':
              continue
  
          # A line can specify lower limit only (useful for
          # medium compounds), or both lower and upper limit.
          fields = line.split(None)
          if len(fields) < 2 or len(fields) > 4:
              raise ParseError('Malformed compound limit: {}'.format(fields))
  
          # Extend to four values and unpack
          fields.extend(['-']*(4-len(fields)))
          compound_id, compartment, lower, upper = fields
  
          compound = Compound(compound_id, compartment)
          lower = float(lower) if lower != '-' else None
          upper = float(upper) if upper != '-' else None
  
          yield compound, None, lower, upper
docs: Parse a space-separated file containing exchange compound flux limits.
  
      The first two columns contain compound IDs and compartment while the
      third column contains the lower flux limits. The fourth column is
      optional and contains the upper flux limit.