2017-07-07 25 views
0

私はPythonで文字列要素で配列を作成しようとします。下線付きの文字列をUnicodeに変換するにはどうすればよいですか?

a = array('u',["sub_id","datetime"]) 

PythonのショーはTypeError:配列の項目がなければなりませんユニコード文字列を作成する

理由は、要求にそれを送信することです。私はいくつかの製品のJSONで残りのAPIを使用してリクエストを送信しますが、このパラメータは配列でなければならないと言います(タプルとリストは一致しません)

私はpython 3.4.4を使用します。

+1

あなたはPy 2または3にいますか? – patrick

+0

奇妙なことに、私はあなたのコードを実行するとTypeErrorを取得しません、 'NameError:name '配列'が定義されていません。これは実行している完全なコードですか? – Kevin

+0

@Kevinあなたは '配列をインポートする '必要があります – patrick

答えて

2

タイプコード'u'の配列は、Python 3では廃止されているため、ほとんど使用する必要はありません。この特定のケースで

Unicode文字の配列が文字の配列ではなく、文字列の配列であるので、それは、特に悪いアイデアのように思えます。複数のUnicode文字列の配列を作成することはできません。使用しているAPIで複数の文字列のリストが必要な場合は、Python arrayを使用することは望ましくありません。


JSONが「配列」と呼ぶものは、Pythonが「リスト」と呼ぶものに非常に似ています。あなたが実際にしなければならないことは、["sub_id","datetime"]のようなあなたのすべての文字列のPythonリストを作成し、次にPythonのjson moduleを使ってPythonリストを配列を含むJSON文書にエンコードします。

3

問題はアンダースコアとは関係ありません。

タイプコード'u'の配列には角括弧は必要ありません。彼らは反復可能ではありませんので、これは数値型の異なる

>>> a = array('u', u'sub_id') 
>>> a.append(u'g') 
>>> a 
array('u', u'sub_idg') 

>>> a = array('u', u'sub_id datetime') 
>>> a.extend(u' time') 
>>> a 
array('u', u'sub_id datetime time') 

、そしてあなたは、リストを経由して数字の反復可能に合格する必要があります:ユニコードオブジェクトは反復可能です。


Python 3.4のバージョンが含まれているため、APIが実際に文字列のリストを望んでいると思っています。

+0

それは適切ではありません –

+0

それで質問にそれを含めるべきでした。 –

関連する問題