【ゼロから学ぶPython】15. 文字列と文字セットのエンコーディングを深く理解する

キャラクターセット

コンピュータは数字 (実際には数字 0 と 1) しか処理できません。テキストを処理したい場合は、処理する前にテキストを数字に変換する必要があります。初期のコンピューターは 8 ビット (bit) を 1 バイト (byte) として使用していたため、1 バイトが表現できる最大の整数は 255 (2 進数 11111111=10 進数 255) で、サイズを表すために 0 ~ 255 が使用されます。英語の文字、数字、および数字を書きます。一部の記号では、このコード表を ASCII コードと呼びます。

ASCII コード テーブルは 7 ビット バイナリを使用して文字を表し、その範囲は 0 ~ 127 です。合計で 128 文字しか表現できず、英語のみをサポートします。コンピューターサイエンスの発展に伴い、西ヨーロッパ言語、ギリシャ語、タイ語、アラビア語、ヘブライ語、その他の言語の文字もコード表に追加され、新しいコード表 ISO8859-1 (Latin1 としても知られる) コード表が形成されました。 。ISO8859-1 は 8 ビット バイナリを使用して文字列を表現し、ASCII コード テーブルと完全に互換性があります。

Unicode (Unicode、Universal Code、Unicode) は、文字セット、エンコーディング スキームなどを含む、コンピュータ サイエンスの分野における業界標準です。Unicode は、従来の文字エンコーディング スキームの制限を解決するために作成され、言語間およびプラットフォーム間のテキスト変換と処理の要件を満たすために、各言語の各文字に統一された一意のバイナリ エンコーディングを設定します。

文字とエンコーディング間の変換

chrメソッドとordメソッドを使用することで、文字とコードの相互変換が実現できます。

print(ord('a'))  # 使用ord方法,可以获取一个字符对应的编码
print(chr(100))  # 使用chr方法,可以获取一个编码对应的字符

エンコード規則

Unicode を使用すると、各言語の各文字に固有のバイナリ コードが設定されますが、依然として特定の問題があり、完全ではありません。

例えば、漢字の「君」を文字に変換した結果は 0x4f60、バイナリに変換した結果は 01001111 01100000 になります。 このとき問題が 2 つあります。

  1. 1001111 01100000 は漢字の「あなた」ですか、それとも 2 つの Latin1 文字ですか?
  2. Unicode が各文字を n 8 ビットで表すと規定している場合、Latin1 文字の場合、多くの記憶領域が無駄になります。

この問題を解決するために、いくつかのエンコード規則が登場し、特定のエンコード規則に従って Unicode 番号を計算して新しいエンコードを取得します。中国で一般的に使用される文字エンコーディングには、GBK、Big5、utf8 などがあります。

文字列の encode メソッドを使用すると、指定したエンコード形式に従って文字列をバイナリに変換でき、decode メソッドを使用すると、バイナリ データを指定したエンコード形式に従って文字列に変換できます。

s1 = '你'.encode('utf8')  # 将字符 你 按照utf8格式编码称为二进制
print(type(s1))  # <class 'bytes'>
print(s1)  # b'\xe4\xbd\xa0'

s2 = s1.decode('utf8') # 将二进制按照utf8格式解码称为字符串
print(s2)

s3 = '你'.encode('gbk') # 将字符 你 按照gbk格式转换称为二进制
print(s3)  # b'\xc4\xe3'

s4 = s3.decode('gbk')  # 将二进制按照gbk格式解码称为字符
print(s4)

思考:文字化けの原因と解決策。

学習目標

  1. 文字列表現
  2. 文字列の添字とスライス
  3. 文字列に対する一般的な操作
  4. 文字セットとエンコーディング
  5. メンバーオペレーター
  6. 文字列のフォーマットメソッド

メンバーオペレーター

メンバーシップ演算子 (in および not in) を使用すると、要素が指定された反復可能オブジェクト内にあるかどうか、および構文形式で判断される要素が反復可能オブジェクトであるかどうかを迅速に判断できます。

演算子内

思考: 指定された文字列に文字が含まれているかどうかをどのように判断するか?

msg = 'hello'
char = input('请输入一个字符:')

# 使用字符串的 find 方法可以判断字符是否存在
if msg.find(char) != -1:
    print('您输入的字符存在')
else:
    print('您输入的字符不存在')

# 使用 in 运算符可以更加方便的查看字符是否存在
if char in msg:
    print('您输入的字符存在')
else:
    print('您输入的字符不存在')

演算子にない

これは、要素が指定された文字列内にないかどうかを判断するために not in が使用されることを除いて、in 演算子と同じ方法で使用されます。

注: すべてのデータで恒等演算子を使用できるわけではありません。また、恒等演算子の後には反復可能なオブジェクトのみを続けることができます。

'h' in 'hello'  
'zhangsan' in ['lisi','henry','merry','jack']

1 in 123 # 报错,数字 123 不是一个可迭代对象

先進的な事例

【Python】Pythonで単語当てゲームを実現 - 知力と運に挑戦!

[Python] Python tkinter ライブラリは重量単位変換用の GUI プログラムを実装します

[Python] Selenium を使用して (2023 Blog Star) エントリを取得します

【Python】SeleniumとChrome WebDriverを使って「Tencent Cloud Studio実践合宿」の記事情報を取得する

Tencent Cloud Cloud Studio を使用してバイドゥ AI のスケジューリングを実現し、テキスト認識を実現します

【Pythonで楽しむシリーズ【Xiaobi必見】Pythonマルチスレッドクローラー:絵文字パッケージWebサイトの画像をダウンロード

【Pythonで遊ぶシリーズ】 【小白さん必見】Pythonを使って双世丘の履歴データをクロールして視覚的に分析する

【Pythonで遊ぶシリーズ】 【Xiaobiさん必見】Pythonクローラー技術を使ってプロキシIPを取得してファイルに保存する

【シャオバイ必見】PILライブラリを使ってランク別・列別の複数画像の合成を実現するPython画像合成例

【Xiaobai必見】Pythonクローラーの実戦は女神の写真を一括ダウンロードしてローカルに保存

【Xiaobi必見】Pythonワードクラウドジェネレーターの詳細な分析とコード実装

【Xiaobai必見】NBA選手データの例をPythonでクロール

【Xiaobiさん必見】Pythonでヒマラヤ音声をクロールして保存するサンプルコード

【シャオバイ必見】Pythonを使ってリーグ・オブ・レジェンドのスキン画像を一括ダウンロードする技術的実現

【Xiaobai必見】Pythonクローラーのデータ処理と可視化

【シャオバイ必見】栄光王のヒーロースキン画像を簡単に入手できるPythonクローラープログラム

【Xiaobiさん必見】Pythonを使ってパーソナライズされたリストのWord文書を生成する

【小白必見】Pythonクローラー戦闘:陰陽師のWebサイトから写真を取得して自動保存

Xiaobai必見の図書館管理システムシリーズ - ログインおよび登録機能のサンプルコード

小白の実戦100例:小白入門に最適な完全かつシンプルな双世丘宝くじ当選判定プログラム

geopandas と Shapely (.shp) を使用した地理空間データの処理と視覚化

セレンを使用して Maoyan の映画リスト データをクロールする

画像強調アルゴリズム Retinex の原理と実装の詳細な説明

クローラー入門ガイド (8): 視覚的な分析のための気象データ クローラー プログラムを作成する

クローラー入門(7):SeleniumとBeautifulSoupを使ってDouban映画トップ250をクロールする作例解説【爬虫類Xiaobai必見】

クローラー入門ガイド (6): クローラー対策と高度なスキル: IP プロキシ、ユーザー エージェント偽装、Cookie バイパス ログイン検証および検証コード識別ツール

クローラ入門(5):分散クローラと同時実行制御 【クローリング効率向上と要求合理性制御の実装方法】

クローラー入門 (4): Selenium と API を使用して動的 Web ページをクロールする最良の方法

クローラー入門ガイド (3): Python ネットワーク リクエストと一般的なクローラー対策戦略

クローラー入門 (2): データの抽出と処理に正規表現を使用する方法

爬虫類入門(1):爬虫類の基礎とスキルを学ぶ

画像認識における深層学習モデルの応用: CIFAR-10 データセットの実践と精度分析

Python オブジェクト指向プログラミングの基本とサンプル コード

MySQL データベース操作ガイド: Python を使用して操作を追加、削除、変更、クエリする方法を学習します。

Python ファイル操作ガイド: エンコード、読み取り、書き込み、例外処理

PythonとSeleniumを使ってクローリングを自動化#【ドラゴンボートフェスティバル特別公募】究極のテクノロジーを探求、未来はあなた次第「宗」 #寄稿記事

Python マルチスレッドおよびマルチプロセスのチュートリアル: 包括的な分析、コードケース、最適化スキル

Selenium 自動化ツールセット - 完全なガイドとチュートリアル

Python Web クローラーの基礎から実戦までのチュートリアル

Python 入門チュートリアル: for ループ、while ループ、文字列操作、ファイルの読み書き、例外処理の基礎知識をマスターします。

Pandas データ処理と分析チュートリアル: 基本から実際の戦闘まで

Python でよく使用されるデータ型と関連する操作の詳細な説明

【2023年最新】分類モデルの指標を改善する6つの主要なスキームを詳しく解説

Python プログラミングの基礎と高度なスキル、Web 開発、データ分析、機械学習と人工知能の入門

4 つの回帰手法による予測結果をグラフ化: ベクトル回帰、ランダム フォレスト回帰、線形回帰、K 最近傍回帰

おすすめ

転載: blog.csdn.net/qq_33681891/article/details/132232951