ファイルにユニコード文字列があります。私はPythonでそれを読んで、ビットに変換してから、ユニコードに戻って新しいファイルに書きたいと思っています。 変数をtest_unicode = "®"
にして使用すると動作します。しかし、このファイルをファイルから読んだ場合、いくつかのランダムなものが得られます(エラーを試しました=置き換え、バックスラッシュプレース、無視)。ここに私のスクリプトは次のとおりです。Pythonでファイルからユニコードを読み書きする
def frombits(bits):
chars = []
for b in range(int(len(bits)/8)):
byte = bits[b*8:(b+1)*8]
chars.append(chr(int(''.join([str(bit) for bit in byte]), 2)))
return ''.join(chars)
bit_list = ''
with open('uni.txt', "r", encoding='utf-8', errors='replace') as f:
byte = f.read(1)
while(byte):
bit_list+='{0:08b}'.format(ord(byte))
byte=f.read(1)
test_unicode = '®'
test_unicode_bit_list = '{0:08b}'.format(ord(test_unicode))
print(bit_list)
print(test_unicode_bit_list)
test_unicode = ''.join(frombits(test_unicode_bit_list))
read_unicode = ''.join(frombits(bit_list))
print(test_unicode.encode("utf-8"))
print(read_unicode.encode("utf-8"))
f = open("uni_test.txt", 'wb')
f.write(test_unicode.encode("utf-8"))
f = open("uni_read.txt", 'wb')
f.write(read_unicode.encode("utf-8"))
私は、ファイルuni.txtを作る®の内側と、このスクリプトを最後に実行した場合、私は2つのファイルを取得します(最初のユニから読み出された値を使用して、変数test_unicode 2つ目を使用して作られました.TXT):
uni_test.txt --->®
uni_read.txt ---> YY
どのように私は、この "読み取り - ビットに変換する - unicodeに変換する - 書き込み" んありませんプロシージャは正しくですか?ありがとうございました!
を
open(filename, 'rb')
を使用して、バイト単位での読み取りのためのあなたのファイルを開き、適切なエンコーディングで保存 –ありがとう、それは動作します:) –
私はこの質問を受け入れて閉じることができますので、これを回答として投稿します。 –