Python DOCTYPE语法错误

时间:2013-07-29 21:30:37

标签: python

#!/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时,我都会收到无效语法错误。不知道是什么问题。由于我是python的新手,所以将不胜感激。谢谢!

4 个答案:

答案 0 :(得分:1)

使用不同的引号:

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

Print语句将中间的引号视为结束引号。您需要使用/“或使用不同的引号来逃避引号。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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">"""

答案 3 :(得分:1)

对于那些“长多行文字”,您可能更喜欢使用triple quotes""")。

与任何最新版本的Python上可用的format字符串方法相结合,您可以获得穷人的模板引擎:

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)
相关问题