AppengineのPython:eval()のエラー
-
27-10-2019 - |
質問
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()
そのエラーを私に与えています。どうすればこの問題を回避できますか?
解決
テキストを分割するには、文字列に組み込まれています splitlines
方法:
for line in self.request.get('text').splitlines():
... do whatever ...
次に、特定の行が #
, 、 これを試して:
if line.strip()[0]=='#':
... do whatever ...
まとめる:
for line in self.request.get('text').splitlines():
if line.strip()[0] == '#':
... do whatever ...
所属していません StackOverflow