如图,我爬虫获取到的是一个 dict。现在我要把字典的中文解析出来。我用 py2 是这么干的:
主要是用了字符串的 decode。但是 py3 没有这个方法啊。
而且这个 dict 是用 requests 获取出来的 response.headers 获取出来就是字符串 dict,不能是 bytes。我自己试了用 bytes(s,"gbk"),str(s,"gbk")都没用。自己也想了几天,没啥结果。别跟我说在字符串前面加个 b 变为 bytes,问题是变量不能加 b 啊。

1
jianzhao123 2018 年 10 月 5 日 via Android
哈哈哈,我前段时间也遇到了,放弃了后来……
|
2
leoleoasd 2018 年 10 月 5 日
eval("ans = b'{}'".format(str))
|
3
lhx2008 2018 年 10 月 5 日 data.encode("raw_unicode_escape")
|
4
XIVN1987 2018 年 10 月 5 日
先 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 月 5 日
"\xd3\xf1\xc1\xfa".encode("raw_unicode_escape").decode("gbk")
Out[5]: '玉龙' |
6
fhefh 2018 年 10 月 5 日
先检查 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 月 5 日
|
8
run2 2018 年 10 月 5 日
呃,我不是很懂 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 月 6 日
既然是爬虫,
response = requests.get(url) response.encoding="utf-8" 就直接是能看懂的汉字了, 那用这么麻烦... |
11
vipfts 2018 年 10 月 6 日
print(str(b'\xb6\xd4\xb6\xcc\xd0\xc5', encoding="GBK"))
|
12
v2014 2018 年 10 月 7 日
|
13
evilhexxx 2018 年 10 月 7 日
网络编程中常见的编码问题
|