在python中解析日志文件

时间:2011-08-03 17:51:26

标签: python parsing notepad++

我有一个日志文件,其行如下所示:

"1","2546857-23541","f_last","user","4:19 P.M.","11/02/2009","START","27","27","3","c2546857-23541",""

日志中的每一行作为12个双引号部分,字符串中的第7个双引号部分来自用户在聊天窗口中输入内容的位置:

"22","2546857-23541","f_last","john","4:38 P.M.","11/02/2009","
What's up","245","47","1","c2546857-23541",""

这个字符串也显示了我遇到的问题;聊天日志中有一些区域,用户键入的文本位于日志文件中的新行上,而不是像第一个示例中的相同行。 所以基本上我希望第二个例子中的行看起来像第一个例子。

我尝试在N ++中使用查找/替换,我能够找到每个“孤立”行,但我无法让它加入它上面的行。 然后我想到制作一个python文件来为我自动化它,但我对如何实际编码它感到困惑。


Python运行unutbu代码的错误

"1760","4746880-00129","bwhiteside","tom","11:47 A.M.","12/10/2009","I do not see ^"refresh your knowledge
^" on the screen","422","0","0","c4746871-00128",""

3 个答案:

答案 0 :(得分:3)

csv module非常聪明,能够识别引用的项目何时未完成(因此必须包含换行符)。

import csv
with open('data.log',"r") as fin:
    with open('data2.log','w') as fout:        
        reader=csv.reader(fin,delimiter=',', quotechar='"', escapechar='^')
        writer=csv.writer(fout, delimiter=',', 
                          doublequote=False, quoting=csv.QUOTE_ALL)
        for row in reader:
            row[6]=row[6].replace('\n',' ')
            writer.writerow(row)

答案 1 :(得分:0)

如果数据是有效的CSV,则可以使用Python的csv.reader类。它应该可以很好地处理您的示例数据。它可能无法正常工作,具体取决于源系统中嵌入双引号的内容。请参阅:http://docs.python.org/library/csv.html#module-contents

答案 2 :(得分:0)

除非我误解了这个问题。您只需读入文件并删除双引号字符之间出现的任何换行符。