web-dev-qa-db-ja.com

Python 3つのデコード文字列

これは繰り返しの質問である可能性が高いことは理解していますが、解決策を見つけるのに苦労しています。

要するに、私はデコードしたい文字列を持っています:

raw = "\x94my quote\x94"
string = decode(raw)

文字列から期待される

'"my quote"'

最後の注意点は、私がPython 3で作業しているので、rawはユニコードであり、したがってすでにデコードされているということです。それを考えると、正確に何をする必要がありますか?デコード」"\x94"文字?

4
rmorshea
string = "\x22my quote\x22"
print(string)

デコードする必要はありません、Python 3はそれを行いますが、二重引用符には正しい制御文字が必要です"

ただし、別の文字セットを使用している場合は、Windows-1252を使用しているように見えるため、その文字セットからバイト文字列をデコードする必要があります。

str(b"\x94my quote\x94", "windows-1252")

文字列がバイト文字列でない場合は、最初にエンコードする必要があります。latin-1エンコードが機能することがわかりました。

string = "\x94my quote\x94"
str(string.encode("latin-1"), "windows-1252")
3
CodeMonkey

あなたがこれを意味するかどうかはわかりませんが、これは機能します:

some_binary = a = b"\x94my quote\x94"
result = some_binary.decode()

そして、結果が得られました...選択するエンコーディングがわからない場合は、chardet.detectを使用できます。

import chardet
chardet.detect(some_binary)
2
Yuval Pruss

このようにやってみましたか? decodeクラスのメソッドとしてbyteを呼び出し、引数としてutf-8を渡す必要があると思います。文字列の前にもbを追加します。

string = b"\x94my quote\x94"
decoded_str = string.decode('utf-8', 'ignore')
print(decoded_str)
1