0

jsonを使用して、自然言語処理コンテキストで物事を出し入れするAPIがあります。

すべてがユニコードとして出てきます。たとえば、私の API から単語のリストを取得すると、すべての単語が u'' になります。ファイルに出力した後の json 出力は次のようになります。

{u'words': [u'every', u'single', u'word']}

出力をファイルに出力するときだけでなく、端末ではすべてがうまく見えることを明確にする必要があります。

これが望ましいデフォルトの動作なのか、これをわかりやすくするために途中で何かをする必要があるのか​​ 、それとも何なのか、まだわかりません。出力は、Python 以外の言語や、読み取り可能および/または解析可能である必要がある他のコンテキストで使用されます。

明らかに、私はPythonとUnicode、およびこれがどのようにどこにあるのかを把握していません。

  1. jsonを扱う場合、これは望ましいですか? 私はそれについて心配する必要はありませんか?

  2. これをオフにする方法、または追加の手順を実行する方法(すでに試しましたが、これがどこで行われているのか正確にはわかりません)で、これを迷惑にならないようにします。

学ぶことはたくさんありますので、どんな意見でも構いません。

編集:すべての入力が役に立ちました、ありがとう。

私は、jsonify が実際よりも多くのことを行っているという誤った考えを持っていました。タスク チェーンの早い段階で json.dumps を実行すると、反対側で実際の json が取得されます。

4

3 に答える 3

4

これには何も問題はなく、何もする必要はありません。

Python 2 では、astrは C 文字列に似ています。これは単なるバイトのシーケンスであり、ASCII テキストであると誤って想定されることがあります。UTF-8 や ASCII などのエンコードされたテキストを含めることができます。

unicodeタイプは、Java に似た実際のテキスト文字列を表しますString。これは抽象的な意味でのテキストであり、特定のエンコーディングに関連付けられていません。を にデコードしstrたりunicode、 を にエンコードしたりunicodeできstrます。

JSON のキーと値は文字列 (バイト配列ではなくテキスト) であるためunicode、Python ではオブジェクトとして表されます。

別の言語で使用するために JSON 出力が必要な場合は、jsonモジュールを使用して辞書から生成します。

>>> import json
>>> print json.dumps({u'words': [u'every', u'single', u'word']})
{"words": ["every", "single", "word"]}
于 2012-08-30T23:49:08.763 に答える
3

JSON は Unicode として定義されているため、そうすることが望ましいです。

問題の原因となっている特定の事柄がある場合は、それらを共有する必要があります。それ以外の場合は、Unicode (特に Python) に一般的に慣れていない場合は、 Ned Batchelder の紹介を見ることをお勧めします。あなたがこの口述で何をしているのかわからないので、これがあなたにとって迷惑になっている原因はわかりません。

于 2012-08-30T23:44:32.517 に答える
1

必要になる可能性がある場合は、Python の内部のすべてを Unicode で保持する必要があります。Python が他のプログラムと対話するs.encode('UTF-8')場合は、ファイルやソケットなどに書き込むことができる通常の文字列を作成するために使用します。s.decode('UTF-8')文字列をファイル/ソケットから Unicode に変換するために使用します。(UTF-8 は合理的なデフォルトのようですが、プロトコルが指定するものは何でも使用してください。)

于 2012-08-30T23:43:18.353 に答える