【Python3】ord()は長さ1の文字列を予期していましたが、intが見つかりました
Python3 Ord Expected String Length 1
int
OK、cはord()
タイプですが、# codingstatemachine.py def next_state(self, c): # for each byte we get its class # if it is first byte, we also get byte length byteCls = self._mModel['classTable'][ord(c)]
長さ1の文字列が必要です。それでおしまい。 cはどこで定義されていますか?
next_state()
ここではありませんcは# utf8prober.py def feed(self, aBuf): for c in aBuf: codingState = self._mCodingSM.next_state(c)
functionに渡されます。もう一度見てみましょう。
int
見えますか? Python 2では、aBufは文字列であるため、cは長さ1の文字列です(文字列をトラバースすると、すべての文字が一度に1つずつ取得されます)。aBufはバイト配列になっているため、cは|になります。 _ + _ |タイプ。長さ1の文字列ではありません。つまり、cはすでにord()
であるため、int
関数を呼び出す必要はありません。