ホームページ  >  記事  >  バックエンド開発  >  Python 文字列と関係すること

Python 文字列と関係すること

Tomorin
Tomorinオリジナル
2018-08-23 17:47:291356ブラウズ

この章では、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:
   &#39;ascii&#39; codec can&#39;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&#39;ABC&#39;.decode(&#39;ascii&#39;)
&#39;ABC&#39;
>>> b&#39;\xe4\xb8\xad\xe6\x96\x87&#39;.decode(&#39;utf-8&#39;)
&#39;中文&#39;

bytes にデコードできないバイトが含まれている場合、decode() メソッドはエラーを報告します:

>>> b&#39;\xe4\xb8\xad\xff&#39;.decode(&#39;utf-8&#39;)
Traceback (most recent call last):
  ...
UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xff in position 3: invalid start byte

上記は Python 文字列プログラミングの問題です。

以上がPython 文字列と関係することの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。