python - 无法在 Python 中的 gzip 文件中执行基于正则表达式的操作

标签 python regex gzip

我有一个包含多个字符串的 .gz 文件。我的要求是我必须对 .gz 文件中包含的数据执行几个基于正则表达式的操作

当我在提取的数据行中使用 re.findall() 时出现错误

File "C:\Users\santoshn\AppData\Local\Continuum\anaconda3\lib\re.py", line 182, in search
    return _compile(pattern, flags).search(string)

TypeError: cannot use a string pattern on a bytes-like object

我尝试使用选项“r”打开,结果相同。

我必须先解压这个文件然后再做正则表达式操作还是有办法解决这个问题?

数据包含几行文本,下面列出了一个示例行:

ThreadContext 432 mov (8) <8;1,2>r2  <8;3,3>r4 Instruction count

最佳答案

我能够通过使用 gzip.open() 读取文件来解决这个问题

使用 gzip.open(file,"rb") 作为 f: binFile = f.readlines()

读取此文件后,文件中的每一行都将转换为“ascii”。随后,所有正则表达式操作(如 re.search() 和 re.findall())都可以正常工作。

for line in binFile: # 遍历每一行 line = line.strip().decode('ascii')

关于python - 无法在 Python 中的 gzip 文件中执行基于正则表达式的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50907940/

相关文章:

python - 无法在 Windows 上使用 MingW 编译 Cython

regex - 体素空间上的正则表达式

regex - 为什么在 Makefile 中使用 "$$"(两个美元符号)而不是 "$"(一个美元符号)来删除空行?

相同 gzip 文件的 Python md5 哈希值不一致

Python 2.5.2-代替 'with' 语句的是什么

python - Python 中的异常是什么?

python - 将今天的日期与数据框中的日期进行比较

python - 正则表达式在中文文本上使用时不起作用

java - Gradle/Java 替换文本

linux - 如何压缩文件夹和子文件夹中的新文件