如图,我爬虫获取到的是一个 dict。现在我要把字典的中文解析出来。我用 py2 是这么干的: 主要是用了字符串的 decode。但是 py3 没有这个方法啊。 而且这个 dict 是用 requests 获取出来的 response.headers 获取出来就是字符串 dict,不能是 bytes。我自己试了用 bytes(s,"gbk"),str(s,"gbk")都没用。自己也想了几天,没啥结果。别跟我说在字符串前面加个 b 变为 bytes,问题是变量不能加 b 啊。
1
jianzhao123 2018-10-05 21:54:07 +08:00 via Android
哈哈哈,我前段时间也遇到了,放弃了后来……
|
2
leoleoasd 2018-10-05 21:57:21 +08:00
eval("ans = b'{}'".format(str))
|
3
lhx2008 2018-10-05 21:58:08 +08:00 2
data.encode("raw_unicode_escape")
|
4
XIVN1987 2018-10-05 21:59:53 +08:00
先 encode 再 decode 即可:
In [3]: s.encode('latin') Out[3]: b'\xb6\xd4\xb6\xcc\xd0\xc5' In [4]: s.encode('latin').decode('gbk') Out[4]: '对短信' |
5
lhx2008 2018-10-05 22:00:34 +08:00
"\xd3\xf1\xc1\xfa".encode("raw_unicode_escape").decode("gbk")
Out[5]: '玉龙' |
6
fhefh 2018-10-05 22:07:01 +08:00
![]( )
先检查 text 是什么类型如果 type(text) is bytes,那么 text.decode('unicode_escape') 如果 type(text) is str,那么 text.encode('latin-1').decode('unicode_escape') 链接: https://www.zhihu.com/question/26921730/answer/49625649 |
7
fhefh 2018-10-05 22:13:16 +08:00
|
8
sobigfish 2018-10-05 22:37:31 +08:00
呃,我不是很懂 python
更像是 lz 那个是 dict 不知道怎么转 str 的问题 搜一下还是能找到解决方案。 没测试过中文文件名 lz 自己测试一下 r = requests.get('http://httpbin.org/image/jpeg') headers = str.encode(json.dumps(dict(r.headers))) print(headers.decode('gbk')) |
10
ClutchBear 2018-10-06 08:25:37 +08:00
既然是爬虫,
response = requests.get(url) response.encoding="utf-8" 就直接是能看懂的汉字了, 那用这么麻烦... |
11
vipfts 2018-10-06 10:20:43 +08:00
print(str(b'\xb6\xd4\xb6\xcc\xd0\xc5', encoding="GBK"))
|
12
v2014 2018-10-07 09:25:29 +08:00
|
13
evilhexxx 2018-10-07 12:01:22 +08:00
网络编程中常见的编码问题
|