Python 使用cookiecutter捕获eval()语法错误时出现问题

Python 使用cookiecutter捕获eval()语法错误时出现问题,python,syntax-error,eval,try-except,cookiecutter,Python,Syntax Error,Eval,Try Except,Cookiecutter,我在Python2.7中遇到了一个问题—我有一个cookiecutter项目,它通过CLI提示输入,然后根据该输入生成我的项目 我的一个字段是描述,我已经看到在中添加引号,即“Hello this is my description”(你好,这是我的描述)将在我通过eval时导致语法错误: File "/var/folders/4b/gzszrl3d5fn1q7vvv05s63vmf014cj/T/tmpnJWgqK.py", line 53 parameters = eval("{u'

我在Python2.7中遇到了一个问题—我有一个cookiecutter项目,它通过CLI提示输入,然后根据该输入生成我的项目

我的一个字段是描述,我已经看到在中添加引号,即“Hello this is my description”(你好,这是我的描述)将在我通过eval时导致语法错误:

File "/var/folders/4b/gzszrl3d5fn1q7vvv05s63vmf014cj/T/tmpnJWgqK.py", line 53
    parameters = eval("{u'description': u'Hello this is "my" description'}")
SyntaxError: invalid syntax
ERROR: Stopping generation because pre_gen_project hook script didn't exit successfully
执行此操作的代码部分是:

try:
    parameters = eval("{{ cookiecutter }}")
except:
    print('An error occurred!')
    sys.exit(1)
我的问题是代码从未进入except子句,因此我没有机会优雅地退出

我有什么办法能处理得更好吗

另外,我知道我可以使用一些Jinja2过滤器来清理输入,但我正在寻找一种解决方案,让我在不改变输入的情况下处理错误。

eval{u'description':u'Hello this is my description'}是您的问题

你必须从我的梦中逃脱


eval{u'description':u'Hello this is\my\description'}

这将不会到达except语句,因为它是一个语法错误,意味着在解析时发现错误,这发生在运行代码之前。因此,你需要清除所有语法错误,以使你的系统正常工作。嘿@Arount,我的问题是我无法控制用户输入,也不希望人们逃避自己的文本。我可以使用escape/ReplaceJinja2过滤器自己对其进行转义,但由于项目的布局,无法编辑输入。我正在寻找一种在不改变输入的情况下优雅地处理错误的方法。