appengine 上的 Python:eval() 出错
我正在使用 App Engine 的网络应用程序。该请求处理程序输出一个带有文本字段的表单。提交后,它将获取文本并将
标记添加到以 #
开头的行。我使用 repr()
能够将文本拆分为行列表,并使用 eval()
来分析每行中的文本,而无需使用 u'
位于来自 repr()
的字符串的开头。
class Test(webapp.RequestHandler):
def get(self):
self.response.out.write('<form method=\'post\' action=\'\'>')
self.response.out.write('<textarea name=\'text\'></textarea>')
self.response.out.write('<input type=\'submit\' value=\'Submit\'/>')
self.response.out.write('</form>')
def post(self):
output = []
for line in repr(self.request.get('text')).split('\\n'):
if eval(line)[0] == '#':
output.append('<h1>'+line+'</h1>')
else:
output.append(line)
self.response.out.write('\\n'.join(output))
现在的代码方式给了我这个错误:
File "<string>", line 1
u'#somestring\r
^
SyntaxError: EOL while scanning string literal
如果我只使用 line[0]
而不是 eval(line)[0]
,则一切正常,除了它不适用于第一行。即使第一行以 #
开头,条件也会选择 else
,因为第一个字符将为 u'
而不是 #。尝试使用
eval()
解决这个问题给了我这个错误。我该如何解决这个问题?
I'm using App Engine's webapp. This request handler outputs a form with a text field. On submission, it will get the text and add <h1>
tags to lines that start with #
. I used repr()
to be able to split the text into a list of lines, and eval()
to analyze the text from each line without the u'
at the start of the string that comes from repr()
.
class Test(webapp.RequestHandler):
def get(self):
self.response.out.write('<form method=\'post\' action=\'\'>')
self.response.out.write('<textarea name=\'text\'></textarea>')
self.response.out.write('<input type=\'submit\' value=\'Submit\'/>')
self.response.out.write('</form>')
def post(self):
output = []
for line in repr(self.request.get('text')).split('\\n'):
if eval(line)[0] == '#':
output.append('<h1>'+line+'</h1>')
else:
output.append(line)
self.response.out.write('\\n'.join(output))
The way the code is now, its giving me this error:
File "<string>", line 1
u'#somestring\r
^
SyntaxError: EOL while scanning string literal
If I use just line[0]
instead of eval(line)[0]
, everything works fine except that it doesn't work for the first line. Even if the first line starts with #
, the conditional will go for the else
because the first characters will be u'
and not #
. Trying to work around that with eval()
is giving me that error. How can I work around this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要分割文本,字符串有一个内置的
splitlines
方法:然后要查看特定行是否以
#
开头,请尝试以下操作:放在一起:
To split the text, the strings have a built in
splitlines
method:Then to see if a particular line begins with a
#
, try this:Put together: