繁体   English   中英

Python对变量运行正则表达式,但对内容相同的文件不运行

[英]Python runs regex on variable but not on file with same content

我正在编写一个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

我已经为此努力了几天,阅读了许多文档,但是我无法弄清楚我在做什么错。

希望它真的是愚蠢的,以后我会笑。

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

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

日志文件来自Windows,到处都用\\ n代替\\ r \\ n并感到高兴!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM