请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 6216|回复: 2

如何读取机器码和文本混合的文档,从中提取文本部分的内容?

[复制链接]

16

主题

1

好友

244

积分

中级会员

Rank: 3Rank: 3

发表于 2020-9-20 03:17:25 |显示全部楼层
我想使用python读取一个视频编辑器的存档文件, 这个存档绝大部分是文本, 但是开头部分和中间随机的部分有一些机器码. 我如何才能使用python读取其中的文本片段?



代码样式

我尝试使用代码框粘贴到这里, 但是粘贴完后自动就过滤了那些机器码. 所以我用贴图的方式展示.

开头部分:



中间部分:





我的尝试
  1. with open('testing.wfp', 'r', encoding='utf-8') as f:
复制代码
这个提示: UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9a in position 11: invalid start byte
  1. with open('c:/desktop/testing.wfp', 'rb') as f:
复制代码
使用byte模式读取, 虽然没有提示出错, 但读取的结果f.read()是一个byte变量, 又没有办法使用字符串的操作.
当使用decode()这类的方法进行转换的时候又回到上面的decode error.

我的问题

不知道有什么办法才能读取这样的混合型的文件? 为了方便高手帮我调试, 我在附件中加了一个片段, 包括头部的机器码和下面的一段文字.

非常感谢.



testing.zip

498 Bytes, 下载次数: 3

样式文件, 只有头部的机器码和部分文字内容

回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-9-20 15:47:54 |显示全部楼层
这种文件都是某种软件自己定义的格式,如果你不知道它的规则,或者用专门的库,是没有办法完美读取的,读取了也没法用。

如果你只是需要取出其中的可读文本部分,可以在open里加上参数 errors='ignore' 或者 'replace',会自动替换无法解码的字符

----
你保存成的txt文件就是相当于软件帮你做了这个过程,所以你发上来的txt即使直接打开也不会报错
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

16

主题

1

好友

244

积分

中级会员

Rank: 3Rank: 3

发表于 2020-9-20 18:41:33 |显示全部楼层
crossin先生 发表于 2020-9-20 15:47
这种文件都是某种软件自己定义的格式,如果你不知道它的规则,或者用专门的库,是没有办法完美读取的,读取 ...

非常感谢, errors的ignore/replace正是我需要的.

在这里总是学到很多. 再次感谢.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-3-28 19:48 , Processed in 0.017219 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部