Я использую веб-приложение 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]
, все работает нормально, за исключением того, что оно не работает для первой строки. Даже если первая строка начинается с #
, условное обозначение будет идти для else
, поскольку первые символы будут u'
, а не #
. Попытка обойти это с eval()
дает мне эту ошибку. Как я могу обойти эту проблему?