Как проверить строку на пустоту или длину ноль - PullRequest
1 голос
/ 29 марта 2011

Я недавно задал вопрос о преобразовании списка значений из txt файла в список словаря.Вы можете увидеть это по ссылке здесь: Смотрите мой вопрос здесь


P883, Michael Smith, 1991<br>
L672, Jane Collins, 1992<br><br>(added)<br>(empty line here)<br>
L322, Randy Green, 1992<br>
H732, Justin Wood, 1995(/added)<br>
^key    ^name        ^year of birth 

============== *
на этот вопрос был дан ответ, и я использовал следующий код (принятый ответ), который отлично работает:
<br>
def load(filename):
         students = {}</p>

<pre><code>   infile = open(filename)
   for line in infile:
       line = line.strip()
       parts = [p.strip() for p in line.split(",")]
       students[parts[0]] = (parts[1], parts[2])
   return students 
</code>


однако, когда в значениях из текстового файла есть пробел .. (см. добавленные части) он больше не работает и выдает ошибку, сообщающую, что индекс списка находится вне диапазона.

Ответы [ 4 ]

7 голосов
/ 29 марта 2011

Проверьте наличие пустых строк внутри цикла for и пропустите их:

for line in infile:
    line = line.strip()
    if not line:
        continue
    parts = [p.strip() for p in line.split(",")]
    students[parts[0]] = (parts[1], parts[2])
0 голосов
/ 29 марта 2011
lines = [line.split(', ') for line in file if line]
result = dict([(list[0], element_list[1:]) for line in lines if line])
0 голосов
/ 29 марта 2011

Очень просто проверить строку на пустоту или длину 0:

for line in infile:
    line = line.strip()
    if line:
       do_something()

    # or

    if len(line) > 0:
        do_something()
0 голосов
/ 29 марта 2011

Проверьте наличие пустой строки путем подсчета элементов parts (если в parts есть ноль (или, как правило, меньше трех) элементов, строка была пустой или, по крайней мере, недействительной).или проверяя усеченное значение line по пустой строке.(Извините, я не могу кодировать Python, поэтому здесь нет примера кода ...)

Помните: вы должны всегда проверять размер динамически создаваемого массива перед его индексацией.

...