2015-12-02 4 views
0

Я использую по умолчанию dict и split для чтения содержимого из текстового файла.Избегайте использования пустой строки или пробела по умолчанию dict

Рассмотрите, что текстовый файл имеет следующее содержание.

cbdf25542c194a069464f69efff4859a 1.7.6.1 
cbdf25542c194a069464f69efff4859a 1.6.7.1 
cbdf25542c194a069464f69efff4859a 1.3.6.5 

Теперь рассмотрим, что он испытывает пустую строку между ними, поэтому она возвращается сообщение об ошибке, а не разбор его правильно.

Как избавиться от того же.

Он должен работать нормально, даже если в нем есть пустая строка.

Рассмотрите приведенный ниже код.

def _ip_fetch(current_tenant_id): 

     results = defaultdict(list) 
     with open(flat_text_file_location, 'r') as f: 
       for row in f.readlines(): 
         tenant_id, ip = row.split() 
         results[tenant_id].append(ip) 
     ips = results.get(current_tenant_id, None) 
     return ips 

ответ

1

Вы можете добавить проверку, чтобы убедиться, что строка имеет фактические непробельных символы:

  for row in f.readlines(): 
       if row.strip(): 
        tenant_id, ip = row.split() 
        results[tenant_id].append(ip) 

нулевой строки длины вычисляться значение False в логическом контексте, и все остальные строки вычисляться Правда, поэтому этого должно быть достаточно, чтобы обнаружить пустые строки.