栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

正则表达式解析二进制文件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式解析二进制文件?

我认为您使用Python 3。

1.以 二进制模式 打开文件很简单但是很微妙。与在文本模式下打开它的唯一区别是mode参数包含一个 “ b” 字符。

........

4,这是一个区别: 二进制流 对象没有编码属性。那是有道理的,对吧? 您正在读取(或写入)字节
,而不是字符串,因此Python无需进行任何转换。

http://www.diveintopython3.net/files.html#read

然后,在Python 3中,由于来自文件的二进制流是字节流,因此必须使用字节序列而不是字符序列来定义用于分析文件流的正则表达式。

在Python 2中,字符串是一个字节数组,其字符编码被单独跟踪。如果要让Python
2跟踪字符编码,则必须改用Unipre字符串(u’‘)。但是在Python 3中,字符串始终是Python
2所谓的Unipre字符串,即Unipre字符数组(字节长度可能不同)。

http://www.diveintopython3.net/case-study-porting-chardet-to-
python-3.html

在Python 3中,所有字符串都是 Unipre字符 序列
。没有诸如以UTF-8编码的Python字符串或以CP-1252编码的Python字符串之类的东西。“这是UTF-8字符串吗?”
是一个无效的问题。UTF-8是一种将字符编码为字节序列的方式。如果您想将字符串转换为特定字符编码的字节序列,Python 3可以帮助您。

http://www.diveintopython3.net/strings.html#boring-
stuff

4.6。字符串与字节数#字节是字节;字符是一种抽象。不变的Unipre字符序列称为字符串。在0到255之间的不变数字序列称为字节对象。

....

  1. 要定义字节对象,请使用b’‘“字节文字”语法 。字节文字中的每个字节可以是ASCII字符,也可以是从 x00到
    xff(0–255)的编码十六进制数字。

http://www.diveintopython3.net/strings.html#boring-
stuff

因此,您将如下定义正则表达式

pat = re.compile(b'[a-f]+d+')

而不是

pat = re.compile('[a-f]+d+')

此处有更多说明:

15.6.4。不能在类似字节的对象上使用字符串模式



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号