1

我正在使用 App Engine 的网络应用程序。此请求处理程序输出带有文本字段的表单。提交时,它将获取文本并将<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],则一切正常,只是它不适用于第一行。即使第一行以 开头#,条件也将用于 the,else因为第一个字符将是u'而不是#。试图解决这个问题eval()给了我这个错误。我该如何解决这个问题?

4

1 回答 1

4

要拆分文本,字符串有一个内置splitlines方法:

for line in self.request.get('text').splitlines():
    ... do whatever ...

然后查看特定行是否以 a 开头#,试试这个:

if line.strip()[0]=='#':
    ... do whatever ...

放在一起:

for line in self.request.get('text').splitlines():
    if line.strip()[0] == '#':
        ... do whatever ...
于 2011-03-19T05:08:59.973 回答