从 Python 中的文件读取和写入 unicode
Read and write unicode from file in Python
我在文件中有一个 unicode 字符串 ®。我想用 Python 读取它,将其转换为位,然后返回到 unicode 并写入一个新文件。
如果我创建一个变量 test_unicode = "®"
并使用它,它就会起作用。但是,如果我从文件中读取这个 ® - 我会得到一些随机的东西(尝试过的错误=替换、反斜杠替换、忽略)。这是我的脚本:
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 和第二个使用值阅读 uni.txt):
uni_test.txt ---> ®
uni_read.txt ---> ÿÿ
如何正确执行此 "read - convert to bits - convert to unicode - write" 程序?谢谢!
使用 open(filename, 'rb')
打开文件以读取字节,然后使用适当的编码保存它
我在文件中有一个 unicode 字符串 ®。我想用 Python 读取它,将其转换为位,然后返回到 unicode 并写入一个新文件。
如果我创建一个变量 test_unicode = "®"
并使用它,它就会起作用。但是,如果我从文件中读取这个 ® - 我会得到一些随机的东西(尝试过的错误=替换、反斜杠替换、忽略)。这是我的脚本:
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 和第二个使用值阅读 uni.txt):
uni_test.txt ---> ®
uni_read.txt ---> ÿÿ
如何正确执行此 "read - convert to bits - convert to unicode - write" 程序?谢谢!
使用 open(filename, 'rb')
打开文件以读取字节,然后使用适当的编码保存它