【发布时间】:2016-08-05 17:14:34
【问题描述】:
我有一个混合了 ASCII 的二进制文件,其中有一些我想查找的浮点数。该文件包含如下几行:
1,1,'11.2','11.3';1,1,'100.4';
在我最喜欢的正则表达式测试器中,我发现正确的正则表达式应该是([0-9]+\.{1}[0-9]+)。
代码如下:
import re
data = open('C:\\Users\\Me\\file.bin', 'rb')
pat = re.compile(b'([0-9]+\.{1}[0-9]+)')
print(pat.match(data.read()))
我没有得到一个匹配,这是为什么呢?我在 Python 3.5.1 上。
【问题讨论】:
-
浮点数是否表示为字符串?
-
是的,它们是 ASCII 编码的。
-
什么是与 ASCII 混合的二进制文件,如何识别 ASCII 和二进制部分?在不知道我不能告诉你如何安全地阅读文件的情况下。顺便说一句,您的正则表达式无法匹配
1.、.5,而不是1(但对于最后一部分,可能希望失败) -
@SergeBallesta 对不起,我的意思是 ASCII 和非 ASCII 字符。
标签: python regex python-3.x binary floating-point