2014-06-06 87 views
-1

在蟒蛇3.x中,以URL的值(urllib.request.urlopen)错误类型转换它不会工作作为字符串

sock = urllib.request.urlopen(url) 
code = sock.read (100) 
code = code.replace('\n' , 'enter') 
code = code.replace('\t' , 'tab' ) 

后,我不能把'代码”为字符的字符串,它返回类型转换的误差

code = code.replace('\n' , 'enter') 
code = code.replace('\t' , 'tab' ) 
+1

什么是'f.sock(100)'?它与'urllib.request.urlopen()'响应有什么关系? –

+0

您应该包含您收到的实际回溯。 – dano

回答

1

写作之前:

code = code.replace('\n', 'enter') 
code = code.replace('\t', 'tab') 

这样写:

code = code.decode('utf-8') 

最后,你的代码就变成了:

code = code.decode('utf-8') 
code = code.replace('\n', 'enter') 
code = code.replace('\t', 'tab') 

urllib.request.urlopen返回字节的数据

注:B因为你有f.sock,如果你有一个判断urllib.request.urlopen?

+2

我不认为你的意思是'code.replace('utf-8')'... – dano

+0

我写错了,指令是“code.decode(...)”谢谢 – VicMan

+0

完美的作品手机和我的笔记本电脑与android pyton3。 – raqCecisszio

2
urllib.request

返回字节值

code = code.replace(b'\n', b'enter') 
code = code.replace(b'\t', b'tab') 

解码需要你知道编解码器用于什么文本内容:更换时

无论是解码为一个字符串,或者使用字节文字。你可以看到,如果返回内容的字符集:

codec = sock.info().get_param('charset') 

如果该值不None您可以与编解码器解码:

code = code.decode(codec) 

text/ MIME类型响应的默认编码解码器是ISO-8859- 1(拉丁语1),但HTML响应通常会在标头中的<meta>标记中设置所需的编解码器。保留解码到一个胜任的HTML解析器,如BeautifulSoup。

+0

我的我的android手机的python3解释器有问题,因为句子code.replace代码=(b'\ n',b'enter')无法识别。 但在我的笔记本电脑的作品完美。 – raqCecisszio

相关问题