質問

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 ...
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top