Python文字列、符号化、復号化

2599 ワード

文字列とエンコーディング
UnicodeはASCIIの拡張であり、「可変長符号化」UTF-8符号化は、貯蔵/伝送時にUnicodeの浪費を節約するための空間である.ASCIIコード(1バイト)==>>Unicodeコード(漢字の多くは2バイト、生僻字は4バイト)==>UTF-8コード(1~3バイト、英語は1バイト、漢字は3バイトのみ.英語が大量に存在するとUnicodeよりスペースを節約)、UTF-16コード(2または4バイト)
Python 3はUTF-8符号化がデフォルトで使用されているため、多言語対応.Python 2ヘッドにコメントを追加する必要があります:# -*- coding: utf-8 -*-1文字のエンコーディング:ord()文字=>Unicode符号化の任意進数表示(デフォルト10進数)chr() Unicode符号化の任意進数表示=>文字
len()
strの文字列長、bytesのバイト数などを計算します.
>>> len('  ')
2
>>> len('  '.encode('utf-8'))
6

三重引用符'''または""
1つの文字列が複数行にまたがることを許可し、最初から最後まで小さな文字列を保持するフォーマットは、いわゆるWYSIWYG(所見)フォーマットである.
Unicode文字列
引用符の前のuは、ここで作成されたUnicode文字列を表します.特殊文字を追加したい場合は、PythonのUnicode-Escape符号化を使用します.次の例を示します.
>>> u'Hello\u0020World !'
u'Hello World !'

てんいを禁ずる
引用符の前のrは、文字列がタブに変換されないことを示します.
print(r'test\tddd') #test\tddd
print('test\tddd') #test tddd

bytesタイプ
Pythonの文字列タイプはstrで、メモリにはUnicodeで表され、1文字は数バイトに対応しています.ネットワーク上で転送したり、ディスクに保存したりするには、strをバイト単位のbytesに変更する必要があります.Pythonはbytesタイプのデータに対してb接頭辞付きの一重引用符または二重引用符で表す.
x = b'ABC'
encode()を用いて対応符号化を行い、decode()を用いて復号を行い、パラメータは符号化タイプである.
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'  '
>>>b'\xff\xfeKm\xd5\x8b(u'.decode('utf-16')
'   '
>>>"   ".encode('unicode_escape')
b'\\u6d4b\\u8bd5\\u7528'
>>>"   ".encode('gb2312')
b'\xb2\xe2\xca\xd4\xd3\xc3'
>>>"   ".encode('utf-8')
b'\xe6\xb5\x8b\xe8\xaf\x95\xe7\x94\xa8'
  • .decode([encoding],[errors='struct'])のデフォルトのパラメータはstrictであり、不正な文字に遭遇したときに例外を放出することを表します.ignoreに設定すると、不正な文字を無視して解析を続行します.replaceに設定すると使用しますか?不正な文字の置換xmlcharrefreplaceに設定すると、XMLの文字参照が使用されます.

  • 文字
    ASCII
    Unicode
    UTF-8
    A
    01000001
    00000000 01000001
    01000001

    x
    01001110 001011011
    11100100 10111000 10101101
    「中」のようにUnicode符号化は\u4e2d、Unicode 01001110001011の対応する10進数ordは20013、UTF-8の対応する16進数encodeb'\xe4\xb8\xad'文字列メソッド
  • replace
  • "hello world".replace("hello", "fuck")