Python 3.5 Регулярные выражения не могут прочитать текстовый файл

Будет ли хорошей идеей преобразовать текстовый файл в строку документа (такую ​​же, как буквальная строка) для работы регулярных выражений? Я пытался преобразовать его в строку с str() и используя многострочный режим в ре.

Я создал элементарный скрипт для анализа файла экспорта EnCase через Python. Это работает, но по какой-то причине я не могу заставить код регулярного выражения выполнять функцию findall для поиска файла, если я не сохраню содержимое файла в виде строки документа в переменной как таковой.

file = '''

'''

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

Экспорт файла EnCase по существу разделен табуляцией, и ниже приведена информация о формате файла.

Также см.: Экспорт файлов и папок из EnCase

1 ответ

Решение

Просто прочитайте файл. Это даст вам строку:

In [2]: with open('encase_example.md') as cf:
   ...:     data = cf.read()
   ...:     

In [3]: data[:41]
Out[3]: '\n1)\nName\tfile.doc\nFile Category\tDocument\n'

(Просто показываю часть строки в качестве примера.)

Обратите внимание на данные, что между полями каждой записи есть новые строки, но есть вкладки между ключом и значением каждого поля. Мы будем использовать это позже.

Это работает с регулярными выражениями:

In [14]: re.findall('Full Path.*', data)
Out[14]: 
['Full Path\tproject\\D\\analysis\\system\\folder\\file.doc',
 'Full Path\tproject\\D\\analysis\\system\\folder\\file2.doc']

Если вы хотите разделить записи, просто разделите на \n\n:

In [18]: records = data.split('\n\n')

In [19]: len(records)
Out[19]: 2

In [20]: records[0][:50]
Out[20]: '\n1)\nName\tfile.doc\nFile Category\tDocument\nFile Type'

Вы также можете сделать записи в словаре:

In [35]: dict([ln.split('\t') for ln in records[0].splitlines()][2:])
Out[35]: 
{'Entry Modified': '12/18/14 11:18:53AM',
 'File Acquired': '04/28/15 01:54:45PM',
 'File Category': 'Document',
 'File Created': '03/29/14 03:22:59PM',
 'File Deleted': '',
 'File Type': 'Word Document',
 'Full Path': 'project\\D\\analysis\\system\\folder\\file.doc',
 'Is Deleted': '',
 'Last Written': '08/18/08 01:20:48PM',
 'Name': 'file.doc',
 'Physical Location': '546,930,589,696',
 'Physical Size': '32,768'}
Другие вопросы по тегам