将Ruby脚本转换为Python-字节编码/解码问题
我正在尝试将ruby脚本转换为python脚本。脚本应该读取二进制文件并将其转换为可读字符串。二进制文件包含一些韩语符号。我尝试了多种编码,但似乎都不起作用。最后,数据应该被格式化成一个表。在本代码中没有看到,只是为了更好地理解而提到 ruby脚本运行良好,没有任何问题 我不确定是否需要测试文件,但我已经上传了它 谢谢你帮了我!: Ruby脚本:将Ruby脚本转换为Python-字节编码/解码问题,ruby,python-3.x,encoding,decoding,Ruby,Python 3.x,Encoding,Decoding,我正在尝试将ruby脚本转换为python脚本。脚本应该读取二进制文件并将其转换为可读字符串。二进制文件包含一些韩语符号。我尝试了多种编码,但似乎都不起作用。最后,数据应该被格式化成一个表。在本代码中没有看到,只是为了更好地理解而提到 ruby脚本运行良好,没有任何问题 我不确定是否需要测试文件,但我已经上传了它 谢谢你帮了我!: Ruby脚本: 我认为主要的问题是,在ruby中将用作正则表达式分隔符的斜杠也放在python字符串中,这破坏了替换。 改变 到 而且应该会更好 我还需要在各种解包调
我认为主要的问题是,在ruby中将用作正则表达式分隔符的斜杠也放在python字符串中,这破坏了替换。 改变 到 而且应该会更好 我还需要在各种解包调用中用I替换l,我不完全确定这是否正常,但这对我来说很有效 来自d的样本输出
ISLAND_00
카디프섬#
カ?ディフ島#
Cardiff Island#
Cardiff Island#
Cardiff Island#
Cardiff Island#
Cardiff Island#
Cardiff Island#
Cardiff Island#
?迪夫?#
?迪夫島#
ISLAND_01
마그넬 섬#
マグネル島#
# encoding: utf-8
import struct
import re
def columntypes(t):
if t == 0:
return 4
elif t == 1:
return 4
elif t == 2:
return 4
elif t == 3:
return 12
elif t == 4:
return 32
elif t == 5:
return 128
else:
return 0
doc = open("test.bin", "rb")
b = {
"datasets": struct.unpack("l", doc.read(4))[0],
"datasets_length": struct.unpack("l", doc.read(4))[0],
"columns": struct.unpack("l", doc.read(4))[0],
}
columns = []
for x in range(b["columns"]):
data = doc.read(32)
data = re.sub(b"/\x00.*/", b"", data)
data = data.decode("utf-8")
name = data.rstrip("\x00")
columns.append(
{
"name": name,
"length": columntypes(struct.unpack("l", doc.read(4))[0])
}
)
datasets = []
for x in range(b["datasets"]):
trash = doc.read(4)
dataset = []
for c in columns:
data = doc.read(c["length"])
if c["length"] != 4:
data = re.sub(b"/\x00.*/", b"", data)
# Error here
# Encodings tried: utf-8, euc_kr, cp949
d = data.decode("utf-8").rstrip("\x00")
datasets.append(d)
else:
datasets.append(struct.unpack("L", data)[0])
doc.close()
data = re.sub(b"/\x00.*/", b"", data)
data = re.sub(b"\x00.*", b"", data)
ISLAND_00
카디프섬#
カ?ディフ島#
Cardiff Island#
Cardiff Island#
Cardiff Island#
Cardiff Island#
Cardiff Island#
Cardiff Island#
Cardiff Island#
?迪夫?#
?迪夫島#
ISLAND_01
마그넬 섬#
マグネル島#