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ヘッドにコメントを追加する必要があります:
len()
strの文字列長、bytesのバイト数などを計算します.
三重引用符'''または""
1つの文字列が複数行にまたがることを許可し、最初から最後まで小さな文字列を保持するフォーマットは、いわゆるWYSIWYG(所見)フォーマットである.
Unicode文字列
引用符の前の
てんいを禁ずる
引用符の前の
bytesタイプ
Pythonの文字列タイプはstrで、メモリにはUnicodeで表され、1文字は数バイトに対応しています.ネットワーク上で転送したり、ディスクに保存したりするには、strをバイト単位のbytesに変更する必要があります.Pythonはbytesタイプのデータに対してb接頭辞付きの一重引用符または二重引用符で表す. .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符号化は replace
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'
文字
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進数encode
はb'\xe4\xb8\xad'
文字列メソッド"hello world".replace("hello", "fuck")