App Engine の webapp を使用しています。このリクエスト ハンドラーは、テキスト フィールドを含むフォームを出力します。送信すると、テキストが取得され、<h1>
で始まる行にタグが追加されます#
。以前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()