2

重複の可能性:
Pythonでラテン文字列をUnicodeに変換する

ファイルに保存した後、次の形式のリストがあります

list_example = [
         u"\u00cdndia, Tail\u00e2ndia & Cingapura",
         u"Lines through the days 1 (Arabic) \u0633\u0637\u0648\u0631 \u0639\u0628\u0631 \u0627\u0644\u0623\u064a\u0627\u0645 1",
]

ただし、リスト内の文字列の実際の形式は次のとおりです。

actual_format = [
         "Índia, Tailândia & Cingapura ",
         "Lines through the days 1 (Arabic) سطور عبر الأيام 1 | شمس الدين خ "
]

文字列をリストlist_exampleにある文字列に変換するにはどうすればよいですか?actual_format

4

2 に答える 2

2

あなたの質問は私には少し不明確です。いずれにせよ、次のガイドラインは問題の解決に役立つはずです。

これらの文字列をPythonソースコードで定義する場合は、

  • エディターがソースコードファイル(例:utf-8)をどの文字エンコードで保存するかを知る
  • ソースファイルの最初の行で、たとえば# -*- coding: utf-8 -*-
  • これらの文字列をUnicodeオブジェクトとして定義します。

strings = [u"Índia, Tailândia & Cingapura ", u"Lines through the days 1 (Arabic) سطور عبر الأيام 1 | شمس الدين خ "]

(注:Python 3では、リテラル文字列はデフォルトでユニコードオブジェクトです。つまり、必要ありませんu。Python2では、ユニコード文字列はタイプですunicode。Python3では、ユニコード文字列はタイプstringです。)

次に、これらの文字列をファイルに保存する場合は、文字エンコードを明示的に定義する必要があります。

with open('filename', 'w') as f:
    s = '\n'.join(strings)
    f.write(s.encode('utf-8'))

次に、そのファイルからこれらの文字列を再度読み取りたい場合は、ファイルの内容を適切にデコードするために、文字エンコードを明示的に定義する必要があります。

with open('filename') as f:
    strings = [l.decode('utf-8') for line in f]
于 2012-05-25T12:26:25.453 に答える
1
actual_format = [x.decode('unicode-escape') for x in list_example]
于 2012-05-25T11:10:18.353 に答える