私は以下を受け取ります:
value = ['\', 'n']
そして、変換しunicode
て呼び出すという私の通常のルーチンはord
エラーをスローします:
ord() expects a character, but string of length 2 found
の場合、リスト内の文字を結合する必要があるようですlen(value) > 2
。
どうすればこれを行うことができますか?
これを単一の文字列として扱い、Pythonのユニコードエスケープルールなどの一連のルールに従って'\\n'
単一の文字として解釈できるようにする方法を理解しようとしている場合は'\n'
、必要なものを正確に決定する必要があります。それをコーディングします。
まず、2つの1文字の文字列のリストを1つの2文字の文字列に変換するには、次を使用しますjoin
。
>>> value = ['\\', 'n']
>>> escaped_character = ''.join(value)
>>> escaped_character
'\\n'
次に、2文字のエスケープシーケンスを1文字として解釈するには、元に戻そうとしているエスケープルールを知る必要があります。PythonのUnicodeエスケープの場合、それunicode_escape
を行う名前のコーデックがあります。
>>> character = escaped_character.decode('unicode_escape')
>>> character
u'\n'
一方、UTF-8エンコーディングに続いてPython文字列エスケープ、Cバックスラッシュエスケープ、または別の何かを元に戻そうとしている場合は、明らかに別の何かを作成する必要があります。そして、UTF-8についてあなたが言ったことを考えると、おそらくあなたは何か違うものが欲しいと思うでしょう。たとえば、u'é'.encode('UTF-8')
は2バイトのシーケンス'\xce\xa9'
です。decode('unicode_escape')
それを呼び出すだけで、2文字のシーケンスが得られますがu'\u00c3\u00a9'
、これは必要なものではありません。
とにかく、あなたは単一のキャラクターを持っているので、ただ電話してord
ください:
>>> char_ord = ord(character)
>>> char_ord
10
Unicodeへの変換ビットが何であるかわかりません。これがPython3.xの場合、文字列はすでにUnicodeです。2.xであり、文字列がASCIIの場合、が保証されord(s) == ord(unicode(s))
ます。2.xで、文字列が他のエンコーディングである場合、unicode
それらを呼び出すだけで、UnicodeError
または文字化けが得られます。エンコーディングも渡す必要があります。その場合は、このdecode
メソッドを使用することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加