2016-05-04 4 views
0

Я пытаюсь использовать функцию eval для выполнения цикла. Это дает синтаксической ошибке,Функция Python Eval/Exec не разрешает

list_subjects = (element.upper() for element in list(score_card_data['subject_id'])) 
for i,sub in enumerate(list_subjects) : 
    print(("bins_{1:s}").format(i,sub)) 
    print("list(score_card_data.loc[score_card_data['subject_id'] == {1:s}, 'bin_list'])").format(i,sub) 
    eval("("bins_{1:s}").format(i,sub) = "list(score_card_data.loc[score_card_data['subject_id'] == {1:s}, 'bin_list'])").format(i,sub)")  


    File "<ipython-input-192-529c79a094e4>", line 5 
    eval("("bins_{1:s}").format(i,sub) = "list(score_card_data.loc[score_card_data['subject_id'] == {1:s}, 'bin_list'])").format(i,sub)") 
       ^
SyntaxError: invalid syntax 

Как разрешить заявление 2 печати в одной функции Eval

ответ

1

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

У вас есть такие варианты:

  • Используйте одинарные кавычки внутри строки и двойные кавычки, чтобы разграничить его:

    eval("' '.join('some', 'words')") 
    
  • Используйте двойные кавычки внутри строки и одиночные кавычки, чтобы разграничить его:

    eval('" ".join("some", "words")') 
    
  • Использовать любые кавычки внутри е строка и любые кавычки (тот же самый тип с левой и правой стороны, конечно), чтобы разграничить, но избежать все кавычки внутри строки с помощью обратной косой черты:

    eval('\' \'.join(\'some\', \'words\')') 
    eval("\" \".join(\"some\", \"words\")") 
    
  • Используйте любые кавычки внутри строки и " тройные кавычки»(либо три одиночные кавычки ''' или три двойные кавычки """, тот же тип на левой и правой стороне, конечно), чтобы разграничить его:

    eval("""" ".join("some", "words")""") 
    eval("""' '.join('some', 'words')""") 
    eval('''' '.join('some', 'words')''') 
    eval('''" ".join("some", "words")''') 
    
Смежные вопросы