この章では、Python 文字列 の書き方と処理について紹介します。その前に、やっかいな 文字エンコーディング の問題を解決した後、Python 文字列について勉強します。
最新の Python 3 バージョンでは、文字列は Unicode でエンコードされます。つまり、Python 文字列は複数の言語をサポートします。例:
>>> print('包含中文的str') 包含中文的str
単一文字の encoding について、Python は、文字の整数表現 chr()## を取得する ord() 関数を提供します。 #関数はエンコーディングを対応する文字に変換します:
>>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >>> chr(25991) '文'文字の整数エンコーディングがわかっている場合は、str を 16 進数で記述することもできます:
>>> '\u4e2d\u6587' '中文'2 つの記述方法は完全に同等です. . Python の文字列
型は str なので、メモリ上では Unicode で表現され、1 文字が数バイトに相当します。ネットワーク経由で送信したり、ディスクに保存したりする場合は、str をバイト単位のバイトに変更する必要があります。 Python では、バイト型データに対して単一引用符または b プレフィックスが付いた二重引用符を使用します:
x = b'ABC'
'ABC' と b'ABC' を区別するように注意してください。前者は str で、後者は str です。内容は前者と同じように表示されますが、バイトの各文字は 1 バイトしか占有しません。
Unicode で表現された Str は、encode() メソッドを使用して指定したバイトにエンコードできます。例:
>>> 'ABC'.encode('ascii') b'ABC' >>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87' >>> '中文'.encode('ascii') Traceback (most recent call last): File "<stdin>", line 1, in <module>UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
純粋な英語の str は、ASCII を使用してバイトにエンコードでき、内容は同じです。中国語を含む str は、UTF-8 を使用してバイトにエンコードできます。中国語を含む Str は ASCII でエンコードできません。中国語のエンコードの範囲が ASCII エンコードの範囲を超えているため、Python はエラーを報告します。
バイト単位の場合、ASCII文字として表示できないバイトは\x##で表示されます。
逆に、ネットワークまたはディスクからバイト ストリームを読み取る場合、読み取られるデータはバイトです。バイトを str に変更するには、decode() メソッドを使用する必要があります:
>>> b'ABC'.decode('ascii') 'ABC' >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') '中文'
bytes にデコードできないバイトが含まれている場合、decode() メソッドはエラーを報告します:
>>> b'\xe4\xb8\xad\xff'.decode('utf-8') Traceback (most recent call last): ... UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte
上記は Python 文字列プログラミングの問題です。
以上がPython 文字列と関係することの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。