Python Eval / Exec函数无法解析

时间:2016-05-04 03:40:14

标签: python loops eval

我试图使用eval函数来执行循环。它给出了语法错误

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  

如何在一个eval函数中解析2个print语句

1 个答案:

答案 0 :(得分:1)

您收到语法错误,因为您尝试在用于在代码中分隔字符串文字的字符串中使用相同类型的引号。

你有这些选择:

  • 在字符串中使用单引号和双引号来分隔它:

    eval("' '.join('some', 'words')")
    
  • 在字符串和单引号内使用双引号来分隔它:

    eval('" ".join("some", "words")')
    
  • 使用字符串中的任何引号和任何引号(当然是左侧和右侧的相同类型)来分隔它,但使用反斜杠转义字符串中的所有引号:

    eval('\' \'.join(\'some\', \'words\')')
    eval("\" \".join(\"some\", \"words\")")
    
  • 使用字符串中的任何引号和&#34;三重引号&#34; (三个单引号'''或三个双引号""",当然在左侧和右侧相同的类型)来划分它:

    eval("""" ".join("some", "words")""")
    eval("""' '.join('some', 'words')""")
    eval('''' '.join('some', 'words')''')
    eval('''" ".join("some", "words")''')