2016-10-01 3 views
1

Die Spalte ['douban_info'] in meinem Dataset Informationen über Filme in Chinesisch, die in JSON gespeichert, so dass, wenn ich df['douban_info'][0] tun, es gibt:Wie gibt man in Python chinesische Schriftzeichen aus?

enter image description here

die chinesischen Schriftzeichen, alle in Dinge wie \u7834\u6653\u8005 geändert werden, was ich kann nicht mit Leichtigkeit lesen. Ist es möglich, Python dazu zu bringen, sie beim Ausgeben in den Originalchinesen zu verwandeln?

Ich benutze Python 2.7 in Jupyter Notebook.

+1

mit Python 3 wird dies beheben, wie es ändert 'repr' Unicode zurückzukehren statt' bytes' – Eric

+0

@Eric es möglich ist, das kann ich 'Import 'alles in Python 2, um das zu beheben? (wie ich Abteilung von Zukunft importiere). Ändern der Python-Version ist eine große Sache. – cqcn1991

+1

Wenn Sie viel chinesisches Skript verwenden, werden Sie eine viel bessere Zeit mit 3 als 2 haben. – Eric

Antwort

2

So funktioniert Python 2. Es zeigt standardmäßig repr() beim Generieren von Anzeigezeichenfolgen für Listen und Zeichenfolgen an. Sie müssen print Strings, die die Unicode-Zeichen zu sehen:

>>> D = {u'aka': [u'2019\u730e\u8840\u90fd\u5e02(\u6e2f)', u'\u9ece\u660e\u65f6\u5206']} 
>>> D[u'aka'][0] 
u'2019\u730e\u8840\u90fd\u5e02(\u6e2f)' 
>>> print D[u'aka'][0] 
2019猎血都市(港) 

Wenn Sie nicht auf Python 3 bewegen kann, werden Sie müssen Ihre eigene Anzeigeroutine machen, wenn Sie die Standard-repr() Anzeige nicht gefällt. Etwas wie:

D = {u'aka':[u'2019\u730e\u8840\u90fd\u5e02(\u6e2f)',u'\u9ece\u660e\u65f6\u5206']} 

def dump(item): 
    L = [] 
    if isinstance(item,dict): 
     for k,v in item.items(): 
      L.append(dump(k) + ':') 
      L.append(dump(v)) 
     return '{' + ', '.join(L) + '}' 
    elif isinstance(item,list): 
     for i in item: 
      L.append(dump(i)) 
     return '[' + ', '.join(L) + ']' 
    else: 
     return "u'" + item + "'" 

print dump(D) 

Ausgang:

{u'aka':, [u'2019猎血都市(港)', u'黎明时分']} 

Hinweis dies keineswegs vollständig als generischer Dumping Dienstprogramm.

In Python 3 repr() wurde aktualisiert:

>>> print(D) 
{'aka': ['2019猎血都市(港)', '黎明时分']} 
-1

Rufen Sie json.dump oder mit ensure_ascii=False Optionen, dann erhalten Sie rohe utf-8 codierte Zeichenfolge.

von https://docs.python.org/2/library/json.html verwiesen

json.dump(obj, fp, skipkeys=False, **ensure_ascii=True**, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

können Sie versuchen,

df['douban_info'][0].to_json(ensure_ascii=False)

Attributwerte mit chinesischen Zeichen angezeigt zu bekommen.

+0

Meinst du, dass ich dies tun sollte, wenn ich Daten in Pandas Dataframe lese? – cqcn1991

+0

Ich bin nicht vertraut mit Pandas. Sie können Code von http://stackoverflow.com/questions/38406511/write-json-format-using-pandas-series-and-dataframe versuchen, ich denke, dass die Optionen über pandas json Funktionen gleich sind. –

+0

Das ist nicht das Problem. Das ist keine JSON-Zeichenkette, weil sie 'u '' vor dem Beginn jeder Zeichenkette enthält. Das Problem scheint zu sein, dass reP keine Unicode-Zeichen an Ort und Stelle belässt. – Eric

Verwandte Themen