[英]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.