擅长:python、mysql、java
<p>在Python 2中,尝试将unicode字符串与<code>None</code>连接会引发<code>TypeError</code>:</p>
<pre><code>>>> u'abcd' + None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: coercing to Unicode: need string or buffer, NoneType found
</code></pre>
<p>这就是问题所在。但根本原因是<code>json_data</code>可以有一个具有<code>None</code>值的键。下面是一个简化的示例:</p>
<pre><code>>>> import json
>>> data = json.loads('{"a": 1, "b": null}')
{u'a': 1, u'b': None}
>>> b = data['b']
>>> b is None
True
</code></pre>
<p>这不会引发任何异常,因此<code>None</code>可以绑定到一个或多个用于构造<code>line</code>字符串的变量。您可以使用以下方法修复它:</p>
<pre><code>accounts_category = json_data['primaryTopic']['Accounts']['AccountCategory']
if accounts_category is None:
accounts_category = u''
</code></pre>
<p>您可以将其概括为一个函数,以便它可以应用于JSON数据中的其他键。你知道吗</p>
<p>此外,还可以使用<code>str.join()</code>更好地执行字符串的串联:</p>
<pre><code>line = u'|'.join((H, vn_id, sn_id, supplier_name)
</code></pre>