【问题标题】:Python request .json() method change symbolsPython 请求 .json() 方法更改符号
【发布时间】:2018-07-20 10:53:00
【问题描述】:

如果有任何帮助,我将不胜感激

我正在从网站获取信息...而且通常一切正常...但是,只需查看代码:

r = requests.get(s_url)
print r.text
>>>[{"nameID":"D1","text":"I’ll understand what actually happened here."}]
print r.json()
>>>[{u'nameID':u'D1',u'text':u'I\u2019ll understand what actually happened 
   here.'"}]

正如您在 r.json() ' 更改为 \u2019 之后看到的。 为什么这样做?我怎样才能强制不进行此类更改?

谢谢

【问题讨论】:

  • 你点击的网址s_url是返回JSON还是纯文本?
  • @EricWilson s_url 返回纯文本
  • 看来你可以使用r.text,对吧?我不确定你的问题是什么。

标签: python json python-2.7 python-requests


【解决方案1】:

它不是您的字符串中的撇号 ('),而是一个 (unicode) 字符“右单引号” ()。这对肉眼可能不那么明显(取决于使用的字体更容易或更难发现),但它仍然是与计算机完全不同的字符。

>>> u"’" == u"'"
False

您在显示 text 属性和 json() 方法返回的内容之间看到的区别只是该字符的表示问题。

例如:

>>> s = u'’'
>>> print s
’

但是,当您对 json() 返回的字典执行相同操作时,单个键及其值将使用 repr() 格式化,结果是:

>>> d = {'k': s}
>>> print d
{'k': u'\u2019'}

就像:

>>> print repr(s)
u'\u2019'

尽管如此,它还是一样的:

>>> d['k'] == s
True

就此而言:

>>> u'’' == u'\u2019'
True

您可能想查看__str__()__repr__() 方法以及print 的描述以获取更多详细信息:

【讨论】:

    猜你喜欢
    • 2016-01-29
    • 1970-01-01
    • 2019-10-27
    • 2011-05-31
    • 2019-03-08
    • 2019-10-04
    • 2014-12-30
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多