2017-12-28 14 views
1

私はpython 3.5を使用しています。私は文字のセットで配列を定義しようとしています。私は以下を試した。私は実行するとPython 3.5の配列定義でタイプコード 'c'を使用できません

import array 
my_char_array = array.array('c', ['g','e','e','k']) 

、私は次のエラーを取得する:

ValueError: bad typecode (must be b, B, u, h, H, i, I, l, L, q, Q, f or d)

は、 'C' の文字の有効なタイプコードはありませんか?私を教えてください。

答えて

1

docsによれば、'c'は、Python 3.5ではもう使用できません。それは、hereと書かれているように、Python 2.6で利用できました。あなたは、符号付きまたは符号なしの型を使用することがあります。

  • 'b':signed char型
  • 'B':unsigned char型'b'を使用して

m = array.array('b', [ord('g'), ord('e'), ord('e'), ord('k')])

+0

「b」は整数である。 ord( 'char')を使用してcharを整数に変換する必要があります。 –

+0

ありがとうございます。私は 'b'で試しました。TypeError:整数が必要です(strを取得しました) – Harish

+0

編集を参照してください。回答。 :) –

1

これは、Python 3には有効ではないですが、 'b'(符号付き文字)または'B'(u nsigned文字)。あなたは文字列の代わりに数字を渡す必要があります。 ord()を使用すると、文字を数値に変換できます。ユニコード文字のコードは'u'ですが、非推奨です。

https://docs.python.org/3/library/array.html

説明:

Pythonの3のすべての文字列は、Unicodeです。つまり、Cとは異なり、1文字が1バイトに収まらないということです。 1バイトの配列が必要な場合は、タイプコード'b'または'B'を使用できますが、文字を渡して配列を初期化することはできません(文字はバイトに収まらないため)。

それは、このような場で整数に文字を変換するために十分に簡単です:

array.array('b', map(ord, 'Some characters')) 
+0

'u'タイプが機能します。私は 'b'が何を意味しているのか理解しておらず、数字として渡して文字に変換する必要があります:(私はいくつかの研究をする必要があります)私はOOPを初めて使っています – Harish

+0

@Harish私は答えにいくつかの説明を追加しました。 – khelwood

+0

ありがとうございます。これは役に立ちます:) – Harish

1

あなたがPythonシェルでhelp(array.array)を行うことができます。

Arrays represent basic values and behave very much like lists, except the type of objects stored in them is constrained. The type is specified at object creation time by using a type code, which is a single character. The following type codes are defined:

Type code C Type    Minimum size in bytes 
    'b'   signed integer  1 
    'B'   unsigned integer 1 
    'u'   Unicode character 2 (see note) 
    'h'   signed integer  2 
    'H'   unsigned integer 2 
    'i'   signed integer  2 
    'I'   unsigned integer 2 
    'l'   signed integer  4 
    'L'   unsigned integer 4 
    'q'   signed integer  8 (see note) 
    'Q'   unsigned integer 8 (see note) 
    'f'   floating point  4 
    'd'   floating point  8 
関連する問題