Python fortran未格式化文件的字符编码?
我正在读一个fortran未格式化文件。如果我用Python来读入它们Python fortran未格式化文件的字符编码?,python,character-encoding,Python,Character Encoding,我正在读一个fortran未格式化文件。如果我用Python来读入它们 import struct f = open(filename,'r') values = struct.unpack('%20s',f.read(20)) 我喜欢这样的角色 \xf8、xbf、xad、xe8、xd8、xec、xd5、x10、xfd、xbf 等等。其中每一个都是长度为1的,字符串替换函数对它们不起作用 我在处理什么角色集 编辑 粘贴f.read()的部分输出 您是否了解文件是如何编写的,即使用了哪些Fort
import struct
f = open(filename,'r')
values = struct.unpack('%20s',f.read(20))
我喜欢这样的角色
\xf8、xbf、xad、xe8、xd8、xec、xd5、x10、xfd、xbf
等等。其中每一个都是长度为1的,字符串替换函数对它们不起作用
我在处理什么角色集
编辑
粘贴f.read()的部分输出
您是否了解文件是如何编写的,即使用了哪些Fortranwrite
语句?如果不是,你只是在猜测。请记住,未格式化记录通常包含二进制数据,如整数或浮点数,而通常不包含编码字符数据。我猜你看到的是二进制整数。您还应该以二进制文件的形式在Python中打开该文件('rb'
)。这在Windows这样的平台上产生了不同
更新:现在您已经公开了数据的类型是real(8),allocatable::xxx(:)
,并且是用以下代码编写的:
write(filenum) (xxx(i),i = 1,imax)
很明显,数据是二进制的,而不是编码字符。我认为我们需要查看实际文件的一部分。用语言a编写的字符与用语言B编写的相同字符不同吗?怎么用?不管怎样,你能在这里粘贴一些文件吗?或者在某个粘贴站点上?你确定你正在处理一个字符集吗?你有关于这种格式的文件吗?该文件通常用于什么?这个Fortran程序通常用于什么?
od-c
非常适合十六进制转储。我测试了它,它肯定不是任何ASCII兼容的编码,也不是EBCDIC。它也是无效的UTF-16,因为前两个字节将对应于代理项对。它也不是hz
编码的。我认为它被压缩、混乱或损坏了。
write(filenum) (xxx(i),i = 1,imax)