2016-03-24 22 views
1

私はIPythonノートブックでキリル文字を使用しています。私はMLスタジオで働いてもうまく動作します。IPythonノートブックで奇妙なシンボル

ノートブックをダウンロードして開いたとき(たとえば、http://try.jupyter.org)、私は奇妙な文字が表示されます。

(アズールMLメーカーで作成した)バート・ノート:http://try.jupyter.org上で作成

{"nbformat_minor": 0, "cells": [{"source": "\u00d1\u0082\u00d0\u00b5\u00d1\u0081\u00d1\u0082", "cell_type": "markdown", "metadata": {"collapsed": true}}], "nbformat": 4, "metadata": {"kernelspec": {"display_name": "Python 2", "name": "python2", "language": "python"}, "language_info": {"mimetype": "text/x-python", "nbconvert_exporter": "python", "version": "2.7.11", "name": "python", "file_extension": ".py", "pygments_lexer": "ipython2", "codemirror_mode": {"version": 2, "name": "ipython"}}}} 

$ file bad.ipynb 
bad.ipynb: ASCII text, with very long lines, with no line terminators 

"グッド" バージョン、:

{ 
"cells": [ 
    { 
    "cell_type": "markdown", 
    "metadata": {}, 
    "source": [ 
    "тест" 
    ] 
    } 
], 
"metadata": { 
    "kernelspec": { 
    "display_name": "Python 2", 
    "language": "python", 
    "name": "python2" 
    }, 
    "language_info": { 
    "codemirror_mode": { 
    "name": "ipython", 
    "version": 2 
    }, 
    "file_extension": ".py", 
    "mimetype": "text/x-python", 
    "name": "python", 
    "nbconvert_exporter": "python", 
    "pygments_lexer": "ipython2", 
    "version": "2.7.10" 
    } 
}, 
"nbformat": 4, 
"nbformat_minor": 0 
} 

$ file good.ipynb 
good.ipynb: UTF-8 Unicode text 
+0

問題はエンコードです。あなたは "тест"がアスキーではないことを見ています。したがって、JsonパーサーはそれらをUnicodeに変換します。実際のコンテンツを取得するには、エンコーディングを知る必要があります。 –

+0

ええ、私はその理由を理解しています、なぜこれが起こるのですが、私はこの問題を解決する方法を理解できません。 – SashaMN

答えて

1

私はいくつかの研究室に行って、そしてあなたのJSONがあることを見出しましたutf-8にコード化される。あなたの場合は、実際のコンテンツを戻すのは簡単です。以下のコードを参照してください:

のPython 3.xのを

a = '{"nbformat_minor": 0, "cells": [{"source": "\u00d1\u0082\u00d0\u00b5\u00d1\u0081\u00d1\u0082", "cell_type": "markdown", "metadata": {"collapsed": true}}], "nbformat": 4, "metadata": {"kernelspec": {"display_name": "Python 2", "name": "python2", "language": "python"}, "language_info": {"mimetype": "text/x-python", "nbconvert_exporter": "python", "version": "2.7.11", "name": "python", "file_extension": ".py", "pygments_lexer": "ipython2", "codemirror_mode": {"version": 2, "name": "ipython"}}}}' 

result = a.encode('latin-1').decode("utf-8") 

のPython 2.xの

a = '{"nbformat_minor": 0, "cells": [{"source": "\u00d1\u0082\u00d0\u00b5\u00d1\u0081\u00d1\u0082", "cell_type": "markdown", "metadata": {"collapsed": true}}], "nbformat": 4, "metadata": {"kernelspec": {"display_name": "Python 2", "name": "python2", "language": "python"}, "language_info": {"mimetype": "text/x-python", "nbconvert_exporter": "python", "version": "2.7.11", "name": "python", "file_extension": ".py", "pygments_lexer": "ipython2", "codemirror_mode": {"version": 2, "name": "ipython"}}}}' 

result = a.decode('unicode-escape').encode("latin-1") 

'ラテン-1' ないため、コードのこの作品は、他のいくつかの例では動作しない場合があります0〜255文字すべてをカバーするわけではありません。したがって、私はまだこの種のもののためのより良いエンコーディングを探しています。

+0

このコードは、Python 3カーネルでのみ動作します。しかし、少なくとも私は今ノートブックを元に戻すことができます。 – SashaMN

+0

エンコードを行うと、奇妙なことが起こります。私はなぜPython 2.xのコードがそのように見えるか分かりません。私はちょうどそれを試しました。 –

関連する問題