python请求库给错误值单引号

时间:2018-01-16 12:02:15

标签: python json

使用请求库调用API时遇到一些问题。问题描述如下

代码:。

r = requests.post(url, data=json.dumps(json_data), headers=headers)

当我执行r.text时,字符串中的撇号给了我 像这样Bachelor\u2019s Degree。这实际上应该给我作为学士学位的答案。

我也尝试了json.loads,但单引号问题仍然存在, 如何正确获取字符串值。

3 个答案:

答案 0 :(得分:3)

您在此处看到的内容("Bachelor\u2019s Degree")是字符串的内部表示,其中"\u2019"是“正确单引号”的unicode codepoint。这是完全正确的,这里没有错,如果你print()这个字符串你会得到你所期望的:

>>> s = 'Bachelor\u2019s Degree'
>>> print(s)
Bachelor’s Degree

Learning about unicode and encodings可能会为你节省很多时间FWIW。

编辑:

  

当我保存在db中然后在HTML上显示时,它将导致问题   正确?

你试过吗?

您的数据库连接器应该将其编码为正确的编码(根据您的字段,表和客户端编码设置)。

wrt /“在HTML上显示它”,它主要取决于你是使用Python 2.7.x还是Python 3.x以及如何构建HTML,但如果你使用的是一些体面的框架模板引擎(如果不是你应该重新考虑你的堆栈)它可能会开箱即用。

正如我已经提到的,了解unicode和编码将为您节省很多时间。

答案 1 :(得分:1)

它只是使用UTF-8编码,它并非“错误”。

string = 'Bachelor\u2019s Degree'
print(string)
Bachelor’s Degree

您可以再次decodeencode,但我看不出您为什么要这样做的原因(这可能在Python 2中不起作用):

string = 'Bachelor\u2019s Degree'.encode().decode('utf-8')
print(string)
Bachelor’s Degree

答案 2 :(得分:0)

来自请求文档:

发出请求时,请求会针对 基于HTTP标头的响应编码。文字编码 访问r.text时,将使用Requests猜测的值

在响应对象上,您可以使用.content而不是.text来获取UTF-8中的响应