ホームページ > バックエンド開発 > Python チュートリアル > Python でサロゲート ペアを通常の文字列に変換するには?

Python でサロゲート ペアを通常の文字列に変換するには?

Linda Hamilton
リリース: 2024-11-04 06:18:29
オリジナル
1035 人が閲覧しました

How to Convert Surrogate Pairs to Normal Strings in Python?

Python でサロゲート ペアを通常の文字列に変換する

この質問では、サロゲート ペアを含む Python Unicode 文字列を標準文字列に変換する方法を求めます。表現。目標は、わかりやすい Unicode 文字または標準化された 16 進形式を取得することです。

提供されたコード スニペットは、絵文字を表すサロゲート ペアを含む Python 文字列を示します。

<code class="python">emoji = "This is \ud83d\ude4f, an emoji."</code>
ログイン後にコピー

この問題を解決するには、ディスク上の JSON ファイル内のリテラル サロゲート ペア文字列 (6 文字) とメモリ内の 1 文字のサロゲート ペア文字列 (1 文字) を区別することが重要です。

文字列が 1 文字の場合Python ソース コード (提供された例など) でサロゲート ペアが見つかった場合は、アップストリームでの潜在的なバグを示します。これが発生し、解決できない場合は、サロゲートパス エラー ハンドラーを使用できます:

<code class="python">"\ud83d\ude4f".encode('utf-16', 'surrogatepass').decode('utf-16')</code>
ログイン後にコピー

これにより、疑問符 (?) で表される対応する Unicode 文字が出力されます:

'?'
ログイン後にコピー

ディスク上の JSON ファイル内のリテラル サロゲート ペア文字列の場合、JSON データのロード後にサロゲート ペアが存在してはなりません:

<code class="python">ascii(json.loads(r'"\ud83d\ude4f"'))</code>
ログイン後にコピー

これにより、Unicode 文字の標準化された 16 進形式が出力されます:

'\U0001f64f'
ログイン後にコピー

この区別を理解することは、Python でサロゲート ペアを処理し、使用可能な形式に変換するために不可欠です。

以上がPython でサロゲート ペアを通常の文字列に変換するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート