Python在变量上运行regex但在具有相同内容的文件上运行

时间:2015-11-24 17:26:53

标签: python regex

我正在编写一个python(2.7)脚本来使用正则表达式从java应用程序解析一些日志。 我使用http://pythex.org/帮助测试模式,他们在那里使用减少的日志样本就可以了。

一旦我在我的脚本上执行相同的操作,如果我将一些日志放在一个变量中,它就会起作用,但是如果我把它指向一个文件就不会工作。

这是代码

import re
regex_sql_java_error = "\[use.(.*?)\]\nThread:.{9}(GENERAL|LOADER).{17}(ERROR(.*?)\n)"
logfile = open('example_files/Log_file.txt', 'r')
data = logfile.read()
logfile.close()

filtered = re.finditer(regex_sql_java_error, data, re.DOTALL | re.MULTILINE)
if filtered:
    for item in filtered:
        print item.group(0)

我使用的日志文件是一个可怜的1MB文件。

我无法想象这个模式是个问题,但是这个日志文件的样本在pythex.org上匹配得很好

Thread:    5624 LOADER 08:26:37.078     INFO  executeDdlStatements:
[use ADMINI;, SOME BROKEN SQL HERE;]
Thread:    5624 LOADER 08:26:37.086    ERROR  'executeDdlStatements' command failed with the error: Table 'ADMININTT' doesn't exist
                                RANDOM JAVA STUFF

在pythex http://goo.gl/mZSx4z

上链接到它

我一直在抨击这几天,阅读了一堆文档,但我无法弄清楚我做错了什么。

希望它真的很蠢我以后可以笑一点。

无论如何,如果有人能指出我正确的方向,我真的很感激。

1 个答案:

答案 0 :(得分:0)

这是愚蠢和快速的,就像我想的那样,我现在可以笑了。

日志文件来自windows,替换为\ n \ r \ n \ n \ r \ n各处都很开心!