0
#!/usr/bin/python

# Import modules for CGI handling 
import cgi, cgitb 

# Create instance of FieldStorage 
form = cgi.FieldStorage()

name = form.getvalue('name')
age = int(form.getvalue('age')) + 1
print "Content-type: text/html"
print
print "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">"
print "<html>"
print "<head><title></title></head>"
print "<body>"
print "<p> Hello, %s</p>" % (name)
print "<p> Next year, you will be %s years old.</p>" % age
print "</body>"
print "</html>"

每当我写下 DOCTYPE 时,都会收到 Invalid Syntax 错误。不知道是什么问题。由于我是 python 新手,因此将不胜感激。谢谢!

4

4 回答 4

1

对于那些“长多行文本”,您可能更喜欢使用三引号( """)。

再加format上任何最近版本的 Python 上可用的 string 方法,您将获得穷人的 man模板引擎:

tmpl = """Content-type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><title></title></head>
<body>
<p> Hello, {name}</p>
<p> Next year, you will be {age} years old.</p>
</body>
</html>
"""

print tmpl.format(name='Sylvain', age=40)
于 2013-07-29T21:50:11.980 回答
1

使用不同的引号:

print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'

打印语句将中间的引号视为结束引号。您需要使用 /" 或使用不同的引号来转义引号。

print '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">'
于 2013-07-29T21:33:18.530 回答
1

您已对已包含双引号的字符串进行双引号。Python 认为您的字符串在 之后结束PUBLIC,接下来的内容似乎是一个减号后跟一个除号,这是一个错误。最重要的是,您已将字符串分成两行而没有任何连续字符,这将不起作用。使用三引号允许字符串从一行继续到下一行(这也将解决嵌入"字符的问题)。

 print '''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'''
于 2013-07-29T21:33:47.300 回答
1

您的引号是冲突的(请注意语法突出显示在该行之后如何中断)。

要么使用单引号:

print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" '
       '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'

或三重引用它:

print """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">"""
于 2013-07-29T21:33:53.110 回答