<p>我有一个包含json文本的字符串。
我把它转换成原始字符串</p>
<pre><code>json_raw = "%r"%json_all
</code></pre>
<p>然后我试着加载它</p>
<pre><code>json_dict = json.loads(json_raw)
</code></pre>
<p>给我错误<code>JSONDecodeError: Expecting value: line 1 column 1 (char 0)</code></p>
<p>为了调试,我做了<code>print(json_raw)</code>,控制台输出给我:</p>
<pre><code>'{... omitted ...}'
</code></pre>
<hr/>
<p>我不知道我是怎么得到额外的单引号的。我的代码现在看起来像这样</p>
<pre><code>json_all = "{"+json2+"}"
json_raw = "%r"%json_all
json_dict = json.loads(json_raw)
</code></pre>
<hr/>
<p>我查过<a href="https://jsonformatter.curiousconcept.com" rel="nofollow noreferrer">https://jsonformatter.curiousconcept.com</a></p>
<p>好像我的线没有正确地用Scrapy转义。你知道吗</p>
<p>使用<code>Scrapy Shell</code>检查</p>
<pre><code>scrapy shell "https://www.alibabacloud.com/pricing"
json_response = response.xpath('//*[@id="floor1"]/textarea').extract()
</code></pre>
<p>视图<a href="https://github.com/miranda-zhang/stackoverflow/blob/master/json_response" rel="nofollow noreferrer">json_respnse</a></p>
<p>用Scrapy转义的方式破坏了json的原始正确格式。如果我复制粘贴<a href="https://github.com/miranda-zhang/stackoverflow/blob/master/original.html" rel="nofollow noreferrer">original html</a>的json,则没有错误。你知道吗</p>
<p>我把零件拆了,好像惹麻烦了。你知道吗</p>
<pre><code> d_str = '* Each package includes an outbound Data Transfer plan. Any outbound data transfers in excess of your plan\'s Data Transfer allowance are subject to overage charges. <a href="https://www.alibabacloud.com/starter-packages/general" class=\'\\"show-intl\\"\'>Learn more</a><br>*'
json_new = json_response[0].replace(d_str,'',1)
# split on the first character and take the last element of the result
json1=json_new.split("{",1)[-1]
json2=json1.rsplit("}",1)[0]
json_all = '{'+json2+'}'
json_dict = json.loads(json_all)
</code></pre>
<p>现在我可以装了。你知道吗</p>