我有一个文件,大部分是ascii文件,但有时会出现一些非ascii字符。我想解析这些文件并提取以某种方式标记的行。以前我使用sed来实现这一点,但是现在我需要在python中使用同样的方法。(当然我还是可以用的操作系统,但我希望有更方便的)。在
我正在跟踪。在
p = re.compile(".*STATWAH ([0-9]*):([0-9]*):([0-9 ]*):([0-9 ]*) STATWAH.*")
f = open("capture_8_8_8__1_2_3.log", encoding="ascii")
fl = filter(lambda line: p.match(line), f)
len(list(fl))
在最后一行,我得到以下错误消息:
^{pr2}$如果我从第二行删除编码参数,即使用默认编码utf-8,错误如下:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/codecs.py", line 313, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x81 in position 2227: invalid start byte
你能帮我做些什么吗?除了从python调用sed之外?在
升级版。在
多亏了@Wooble我找到了答案。在
正确的代码如下所示:
p = re.compile(rb".*STATWAH ([0-9]*):([0-9]*):([0-9 ]*):([0-9 ]*) STATWAH.*")
f = open("capture_8_8_8__1_2_3.log", "rb")
fl = filter(lambda line: p.match(line), f)
len(list(fl))
我以二进制模式打开了文件,还从二进制字符串表示形式编译正则表达式。在
目前没有回答
相关问题 更多 >
编程相关推荐