Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3:将换行符写入HTML_Python_Html_Unicode_Python 3.x_Newline - Fatal编程技术网

Python 3:将换行符写入HTML

Python 3:将换行符写入HTML,python,html,unicode,python-3.x,newline,Python,Html,Unicode,Python 3.x,Newline,我已经升级到Python3,无法理解如何将反斜杠转义换行符转换为HTML 浏览器按字面方式呈现反斜杠,因此“\n”对HTML源代码没有影响。因此,我的源代码页排成一行,无法诊断。也许我不明白,但不是HTML的新行吗 s = "Hello HTML\n" to_render = s.replace("\n", "<br />") s=“Hello HTML\n” 替换(“\n”和“”) 如果您使用mimetype“text/plain”呈现某些内容,ewlines应该可以工作。通常

我已经升级到Python3,无法理解如何将反斜杠转义换行符转换为HTML


浏览器按字面方式呈现反斜杠,因此“\n”对HTML源代码没有影响。因此,我的源代码页排成一行,无法诊断。

也许我不明白,但

不是HTML的新行吗

s = "Hello HTML\n"
to_render = s.replace("\n", "<br />")
s=“Hello HTML\n”
替换(“\n”和“
”)

如果您使用mimetype
“text/plain”呈现某些内容,ewlines应该可以工作。

通常我会这样做
s=s.replace(“\n”,“
\n”)

因为


用于网页显示和

源代码显示中需要使用
\n

默认情况下,只要我的2美分打印()就应该添加一个换行符-除非您另有说明。然而,Python 3中还有其他变化:

Old: print "The answer is", 2*2
New: print("The answer is", 2*2)

Old: print x,           # Trailing comma suppresses newline
New: print(x, end=" ")  # Appends a space instead of a newline

Old: print              # Prints a newline
New: print()            # You must call the function!

Old: print >>sys.stderr, "fatal error"
New: print("fatal error", file=sys.stderr)

Old: print (x, y)       # prints repr((x, y))
New: print((x, y))      # Not the same as print(x, y)!
Old=python2.5,New=python3

更多详情如下:

解决方案是:

#!/usr/bin/python 
 import sys 
 def print(s): return sys.stdout.buffer.write(s.encode('utf-8'))
 print("Content-type:text/plain;charset=utf-8\n\n") 
 print('晉\n') 
请参见此处的原始讨论:

如果您使用的是Django,答案将非常有用


这是关于如何呈现页面以及是否转义HTML或no的问题。

由于我已经解决了基本标记问题,所以我用正则表达式解决了新行

重新导入
br=re.compile(r“(\r\n |\r |\n)”)#支持CRLF、LF、CR
content=br.sub(r“
\n”,content)#\n用于JavaScript
html实体 ;(回车)和 ;(换行符)不要失败这不起作用,因为这些是“HTML实体”,表示呈现字符的ASCII代码。因此,我的源页面最终看起来是这样的:New· 我建议先将\r\n替换为\n,然后将\r\n替换为
,这样您就不会在字符串中出现一些\r。这不起作用,因为我的输出中还没有换行符。在任何情况下,显然Python 3都不会将UNIX样式的转义字符转换为适当的ASCII字符。那么
=s.replace(
;,“\n”)
Gnarlodious?@Gnarlodious:“反斜杠转义换行”问题如何。这是否意味着“\\n”?反斜杠字符()和n?如果是这样,
replace(\\n“,“
”)将起作用。@S.Lott-G'odious说他的HTML源代码中没有换行符,因此替换字符串也应该放在换行符中。事实上,不清楚他/她是否想要HTML

在那里,只是不是所有的HTML都在一行上。我认为所需的代码是
s=s.replace(r'\n','\n')
。这不起作用,因为我正在汇编字符串并返回结果。如果我是直接从脚本中打印出来的话,可能还可以。是的,事实上,换行符正在工作!似乎我说的是打印(“内容类型:text/html\n\n”,html.encode(“utf-8”))
所以转换为UTF8会删除我的新行!实际上,Python3都是关于UTF8的,所以转换是不必要的。但是,删除转换会产生错误:
UnicodeEncodeError:“ascii”编解码器无法对14525位置的字符“\u8e47”进行编码:序号不在范围(128)
那么发生了什么?有人能告诉我如何格式化这个网站上的文本吗?如果你把这个答案标记为正确的,更多的人会看到它