Python における文字列操作と Unicode エンコードの詳細な説明
この記事では主に、Python での文字列操作と Unicode のエンコードに関する知識を紹介します。必要な方は、一緒に学びに来てください。
文字列型
str
: Unicode文字列。 '' または r'' を使用して構築された文字列はすべて str であり、一重引用符は二重引用符または三重引用符に置き換えることができます。どのように指定しても、Python の内部に保存される場合には違いはありません。 str
:Unicode字符串。采用''或者r''构造的字符串均为str,单引号可以用双引号或者三引号来代替。无论用哪种方式进行制定,在Python内部存储时没有区别。
bytes
:二进制字符串。由于jpg等其他格式的文件不能用str进行显示,所以才用bytes来表示,bytes的每个字节为一个0-255的数字。如果打印的时候,Python会把能够用ASCII表示的部分显示为ASCII,这样方便阅读。bytes几乎支持除了格式化以外的所有str的方法,甚至包括了re模块
bytearray()
:二进制可原地变动的字符串。
utf-8编码范围
范围 | 字节数 | 存储格式 |
0x0000~0x007F (0 ~ 127) | 1字节 | 0xxxxxxx |
0x0080~0x07FF(128 ~ 2047) | 2字节 | 110xxxxx 10xxxxxx |
0x0800~FFFF(2048 ~ 65535) | 3字节 | 1110xxxx 10xxxxxx 10xxxxxx |
0x10000~1FFFFFF(65536 ~ 2097152) | 4字节 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
0x2000000~0x3FFFFFF | 5字节 | 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
0x4000000~0x7FFFFFFF) | 6字节 | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
字节顺序标记BOM
BOM是byte order marker的缩写,
指定编码写入时的规则
Python在使用'utf-8'编码写入文件时不会写入BOM头,但是如果指定编码'utf-8-sig'则会迫使Python写入一个BOM头。
使用'utf-16-be'不会写入一个BOM头,但是采用'utf-16'则会写入一个BOM头。
>>> open('h.txt','w',encoding='utf-8-sig').write('aaa') 3 >>> open('h.txt','rb').read() b'\xef\xbb\xbfaaa' >>> open('h.txt','w',encoding='utf-16').write('bbb') 3 >>> open('h.txt','rb').read() b'\xff\xfeb\x00b\x00b\x00' >>> open('hh.txt','w',encoding='utf-16-be').write('ccc') 3 >>> open('hh.txt','rb').read() b'\x00c\x00c\x00c' >>> open('h.txt','w',encoding='utf-8').write('ddd') 3 >>> open('h.txt','rb').read() b'ddd'
读取时的规则
如果指定了正确的编码,那么BOM会忽略,否则BOM会显示为乱码或者返回异常。
>>> open('h.txt','r').read() '锘縟dd' >>> open('h.txt','r',encoding='utf-8-sig').read() 'ddd'
编码与解码
chr和ord
>>> ord('中') #20013 >>> chr(20013) #'中'
把Unicode硬编码进字符串中。
'xhh':用2位十六进制来表示一个字符
'uhhhh':用4位十六进制来表示一个字符:
'Uhhhhhhhh':用8位十六进制来表示一个字符
>>> s = 'pyx74hu4e2don' #'pyth中on'
str和bytes, bytearray进行转换
str.encode(encoding='utf-8')<br/>
bytes(s,encoding='utf-8')<br/>
bytes.decode(encoding='utf-8')<br/>
str(B, encoding='utf-8')
bytearray(string, encoding='utf-8')
bytearray(bytes)
文档编码声明
Python默认使用utf-8编码。
# -*- coding: latin-1 -*-
bytes
: バイナリ文字列。 jpg などの他の形式のファイルは str を使用して表示できないため、バイトの各バイトは 0 ~ 255 の数値で表されます。印刷する際、PythonはASCIIで表現できる部分をASCIIで表示してくれるので読みやすくなります。 bytes は、書式設定を除くほぼすべての str メソッドをサポートします。これには、再モジュール bytearray()
: を含め、その場で変更できるバイナリ文字列も含まれます。
範囲 | バイト数< /td> | 保存形式 |
0x0000~0x007F (0 ~ 127) | 1バイト | 0xxxxxxx td > |
0x0080~0x07FF(128 ~ 2047) | 2 バイト | 110xxxxx 10xxxxxx |
0x0800~FFFF(2048 ~ 65535) | 3 バイト | 1110xxxx 10xxxxxx 10xxxxxx |
0x10000~1FFFFFF(65536 ~ 2097152) | 4 バイト | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
0x2000000~0x3FFFFFF | 5 ワード セクション | 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
0x4000000~0x7FFFFFFF) | 6 バイト | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx< /td> |
バイトオーダーマークBOM
BOMはバイトオーダーマーカーの略称で、
sys.platform #'win32' sys.getdefaultencoding() # 'utf-8' sys.byteorder #'little' s.isalnum() #s表示字符串 s.isalpha() s.isdecimal s.isdigit() s.isnumeric() s.isprintable() s.isspace() s.isidentifier() #如果字符串可以用作变量名,那么返回True s.islower() s.isupper() s.istitle()
- 🎜chr と ord🎜
- 🎜Unicode を文字列にハードコードします。 🎜
>>> s = 'pyx74hu4e2don' #'pyth中上'
🎜🎜🎜strとバイト、変換用のbytearray🎜🎜🎜🎜str。 encode(encoding='utf-8')🎜
🎜🎜bytes(s,encoding='utf-8')🎜
🎜🎜 bytes.decode(encoding='utf -8')🎜
🎜🎜str(B, エンコーディング='utf-8')
🎜🎜🎜bytearray(string, エンコーディング='utf-8') code>🎜🎜🎜<code>bytearray(bytes)
🎜🎜🎜ドキュメントエンコーディングステートメント🎜🎜🎜🎜Pythonはデフォルトでutf-8エンコーディングを使用します。 🎜🎜🎜# -*-coding: latin-1 -*-
: ドキュメントが latin-1 エンコーディングであると宣言されていることを示します。 🎜🎜🎜ヘルプ機能🎜🎜🎜🎜🎜rrreee🎜🎜🎜🎜🎜🎜Pythonでの文字列操作とUnicodeのエンコードに関する詳細な記事については、PHP中国語Webサイトに注目してください。 🎜🎜🎜🎜

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











このチュートリアルでは、Pythonを使用してZIPFの法則の統計的概念を処理する方法を示し、法律の処理時にPythonの読み取りおよび並べ替えの効率性を示します。 ZIPF分布という用語が何を意味するのか疑問に思うかもしれません。この用語を理解するには、まずZIPFの法律を定義する必要があります。心配しないでください、私は指示を簡素化しようとします。 ZIPFの法則 ZIPFの法則は単に意味します。大きな自然言語のコーパスでは、最も頻繁に発生する単語は、2番目の頻繁な単語のほぼ2倍の頻度で表示されます。 例を見てみましょう。アメリカ英語の茶色のコーパスを見ると、最も頻繁な言葉は「thであることに気付くでしょう。

この記事では、Pythonライブラリである美しいスープを使用してHTMLを解析する方法について説明します。 find()、find_all()、select()、およびget_text()などの一般的な方法は、データ抽出、多様なHTML構造とエラーの処理、および代替案(SEL

ノイズの多い画像を扱うことは、特に携帯電話や低解像度のカメラの写真でよくある問題です。 このチュートリアルでは、OpenCVを使用してPythonの画像フィルタリング手法を調査して、この問題に取り組みます。 画像フィルタリング:強力なツール 画像フィルター

データサイエンスと処理のお気に入りであるPythonは、高性能コンピューティングのための豊富なエコシステムを提供します。ただし、Pythonの並列プログラミングは、独自の課題を提示します。このチュートリアルでは、これらの課題を調査し、グローバルな承認に焦点を当てています

この記事では、深い学習のためにTensorflowとPytorchを比較しています。 関連する手順、データの準備、モデルの構築、トレーニング、評価、展開について詳しく説明しています。 特に計算グラップに関して、フレームワーク間の重要な違い

このチュートリアルでは、Python 3にカスタムパイプラインデータ構造を作成し、機能を強化するためにクラスとオペレーターのオーバーロードを活用していることを示しています。 パイプラインの柔軟性は、一連の機能をデータセットに適用する能力にあります。

Pythonオブジェクトのシリアル化と脱介入は、非自明のプログラムの重要な側面です。 Pythonファイルに何かを保存すると、構成ファイルを読み取る場合、またはHTTPリクエストに応答する場合、オブジェクトシリアル化と脱滑り化を行います。 ある意味では、シリアル化と脱派化は、世界で最も退屈なものです。これらすべての形式とプロトコルを気にするのは誰ですか? Pythonオブジェクトを維持またはストリーミングし、後で完全に取得したいと考えています。 これは、概念レベルで世界を見るのに最適な方法です。ただし、実用的なレベルでは、選択したシリアル化スキーム、形式、またはプロトコルは、プログラムの速度、セキュリティ、メンテナンスの自由、およびその他の側面を決定する場合があります。

Pythonの統計モジュールは、強力なデータ統計分析機能を提供して、生物統計やビジネス分析などのデータの全体的な特性を迅速に理解できるようにします。データポイントを1つずつ見る代わりに、平均や分散などの統計を見て、無視される可能性のある元のデータの傾向と機能を発見し、大きなデータセットをより簡単かつ効果的に比較してください。 このチュートリアルでは、平均を計算し、データセットの分散の程度を測定する方法を説明します。特に明記しない限り、このモジュールのすべての関数は、単に平均を合計するのではなく、平均()関数の計算をサポートします。 浮動小数点数も使用できます。 ランダムをインポートします インポート統計 fractiから
