<p>与<a href="https://stackoverflow.com/questions/19138046/how-to-print-national-characters-in-list-representation">How to print national characters in list representation?</a>中一样,您需要使用自定义过程来打印数据,该过程将打印字符串本身而不是其<code>repr</code>:</p>
<pre><code>def nrepr(data):
city_items=[]
for city, jukebox in data.iteritems():
jukebox_items=[]
for song,artist in jukebox.iteritems():
jukebox_items.append(u'"%s":"%s"' % (song,artist) )
city_items.append(u'"%s":{%s}' % (city, u",".join(jukebox_items)))
return u'{%s}' % u",".join(city_items)
>>> data={u'Osaka':{u'\u3086\u3081\u3044\u3089\u3093\u304b\u306d':u'Takajin Yashiki'}}
>>> print nrepr(data)
{"Osaka":{"ゆめいらんかね":"Takajin Yashiki"}}
</code></pre>
<p><sub>(在文件的开头使用<code>from __future__ import unicode_literals</code>,以避免在每个文本之前放置<code>u</code>)</sub></p>
<p>您不必限制模仿Python的默认输出格式,您可以以任何方式打印它们。在</p>
<hr/>
<p>或者,您可以为字符串使用<code>unicode</code>子类,该字符串将具有<code>repr</code>和国家字符:</p>
^{pr2}$
<p><strong>这是有问题的'cuz<code>repr</code>输出被假定只包含ASCII字符,各种代码依赖于此。<a href="https://stackoverflow.com/questions/49941052/which-encoding-is-used-for-strings-in-python-2-x">You are extremily likely to get ^{<cd7>}s in random places</a>。</strong>它还将打印mojibake<a href="https://stackoverflow.com/questions/49941052/which-encoding-is-used-for-strings-in-python-2-x">if a specific output channel's encoding is different from ^{<cd8>} or if further transcoding is involved.</a></p>