Разобрать лог файл в питоне - PullRequest
3 голосов
/ 03 августа 2011

У меня есть файл журнала, в котором есть строки, которые выглядят так:

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

Каждая строка в журнале, состоящая из 12 разделов двойных кавычек и седьмого раздела двойных кавычек в строке, поступает из того места, где пользователь что-то набрал в окне чата:

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

Эта строка также показывает мою проблему; В журнале чата есть области, где введенный пользователем текст находится на новой строке в файле журнала, а не на той же строке, что и в первом примере. Поэтому я хочу, чтобы строки во втором примере были похожи на первый.

Я пытался использовать Find / Replace в 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 ]

3 голосов
/ 03 августа 2011

Модуль csv достаточно умен, чтобы распознавать, когда цитируемый элемент не завершен (и, следовательно, должен содержать символ новой строки).

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)
0 голосов
/ 03 августа 2011

Если я не понимаю проблему.Вам просто нужно прочитать в файле и удалить все символы новой строки, которые встречаются между символами двойной кавычки.

0 голосов
/ 03 августа 2011

Если ваши данные являются действительными CSV, вы можете использовать класс Python csv.reader. Это должно прекрасно работать с вашими примерами данных. Это может работать некорректно в зависимости от того, как выглядит встроенная двойная кавычка из исходной системы. Смотри: http://docs.python.org/library/csv.html#module-contents.

...