gpt4 book ai didi

python - 使用 Python 3 打印 HTML 数据

转载 作者:行者123 更新时间:2023-11-30 22:50:50 26 4
gpt4 key购买 nike

我是 Python 新手。我正在学习 Python 2.7 类(class),但同时,我希望能够在 Python 3 中完成所有操作。

Python 2.7 中的代码:

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('www.py4inf.com', 80))
mysock.send('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')

while True:
data = mysock.recv(512)
if ( len(data) < 1 ) :
break
print data

mysock.close()

生成格式正确的数据,如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Python 3 中的代码:

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('www.py4inf.com', 80))
mysock.send(('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n').encode())

while True:
data = mysock.recv(512)
if ( len(data) < 1 ) :
break
print(data);

mysock.close()

它产生:

b'HTTP/1.1 200 OK\r\nContent-Type: text/html; charset="utf-8"\r\nContent-Length: 2788\r\nConnection: Close\r\n\r\n<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n 

如您所见,它添加了一个“b”字符,并忽略了\r\n。格式太差了。“b”从哪里来?如何让 python 正确格式化它?我尝试在打印之前将其转换为字符串,但没有帮助。

最佳答案

它有一个 b'' 因为 mysock.recv 返回的类型是 bytes。您应该使用 decode 将字节字符串解码为 un​​icode:

print(data.decode('utf-8'))

请记住,Python 2 和 3 在 PEP 3137 中指定的字符串方面有所不同。 。 Python 3 明确区分了文本和二进制数据,而 Python 2 则不然。

这里的问题是,当 print 接收到你的 bytes 对象时,它会对其调用 str ,这将简单地用它最了解的方式构建一个字符串;即转义反斜杠并保留其余部分:

>>> str(b"hello\nworld")
"b'hello\\nworld'"

然后 print 就会将其打印出来。

关于python - 使用 Python 3 打印 HTML 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39216368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com