我有一个包含多个字符串的 .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/