[解決済み] Python 3でバイトと文字列を変換するには?
2023-07-12 22:43:34
質問
これはPython 101タイプの質問ですが、文字列入力をバイトに変換するようなパッケージを使おうとしたとき、しばらく困惑していました。
以下に示すように、私は自分自身で答えを見つけましたが、何が起こっているのかを明らかにするのに時間がかかったので、ここに記録する価値があると感じました。それは Python 3 に一般的なようなので、私が遊んでいた元のパッケージを参照していません。それはエラーではないようです (単に、特定のパッケージには
.tostring()
メソッドがあり、それは明らかに
ではない
は文字列として理解していたものを生成していました...)
私のテストプログラムはこのようなものです。
import mangler # spoof package
stringThing = """
<Doc>
<Greeting>Hello World</Greeting>
<Greeting>你好</Greeting>
</Doc>
"""
# print out the input
print('This is the string input:')
print(stringThing)
# now make the string into bytes
bytesThing = mangler.tostring(stringThing) # pseudo-code again
# now print it out
print('\nThis is the bytes output:')
print(bytesThing)
このコードからの出力はこうなります。
This is the string input:
<Doc>
<Greeting>Hello World</Greeting>
<Greeting>你好</Greeting>
</Doc>
This is the bytes output:
b'\n<Doc>\n <Greeting>Hello World</Greeting>\n <Greeting>\xe4\xbd\xa0\xe5\xa5\xbd</Greeting>\n</Doc>\n'
そのため、非アスキー文字がごちゃごちゃになってしまうのを防ぐために、バイトと文字列の間で変換できるようにする必要があるのです。
どのように解決するのか?
上記のコードサンプルにある「マングラー」は、これと同等のことを行っていました。
bytesThing = stringThing.encode(encoding='UTF-8')
この書き方は他にもあります(特に
bytes(stringThing, encoding='UTF-8')
を使うなど)、しかし上記の構文は、何が起こっているのか、また文字列を復元するために何をすべきかを明白にしてくれます。
newStringThing = bytesThing.decode(encoding='UTF-8')
このようにすると、元の文字列が復元されます。
注意点としては
str(bytesThing)
を使うと、特に UTF-8 を要求しない限り、Unicode に変換することなく、すべてのgobbledegook を書き写すだけです。
str(bytesThing, encoding='UTF-8')
. エンコーディングが指定されていない場合、エラーは報告されません。
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] Pythonで文字列を小文字にするには?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] JavaScriptで文字列を整数に変換する方法は?
-
[解決済み] Python 3で文字列をバイトに変換する最良の方法?
-
[解決済み] 大文字と小文字の違い
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】動的構造体参照の引数は、有効なフィールド名で評価する必要がある
-
[解決済み] 文字列を連結する方法を教えてください。
-
[解決済み] swiftで改行する方法
-
[解決済み] PowerShell の " (" - 中括弧 ) の分割について
-
[解決済み] デリミタによる文字列の分割
-
[解決済み] Python 3で文字列をバイトに変換する最良の方法?
-
[解決済み】文字列を一定の長さまで繰り返す
-
[解決済み] groovyのシングルクォート、ダブルクォート内の文字列の違いは何ですか?
-
[解決済み] 文字列を含むRust構造体を作成するには?
-
[解決済み] Perlで文字列を数値に変換するには?