2015-08-24 2 views
0

Я написал следующий код в Python, чтобы соответствовать строки внутри файлов:
Python: Сопоставление регулярных выражений в файле

#!/usr/bin/python 

import re 

f = open('file','r') 
for line in f: 
    mat = re.search(r'This',line) 
    mat.group(0) 
f.close() 

Я использовал следующий файл в качестве входных данных:

This is the first line 
That was the first line 

Но когда я попытайтесь найти выражение This, это приводит к выводу None. Почему строка не подходит?

+0

@stribizhev Вам это не нужно. Кроме того, вы не печатаете результаты '.group (0)' – muddyfish

ответ

1

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

Вы не проверили, было ли первое совпадение, так что он потерпел крушение, когда он проверил вторую строку. Вот какой рабочий код:

import re 

with open('file','r') as f: 
    for line in f: 
     mat = re.search(r'This',line) 
     if mat: 
      print mat.group(0) 
+0

в чем разница между двумя способами открытия файла? – sarthak

+0

@sarthak Вам не нужно закрывать дескриптор файла в этом случае – Harman

+0

@sarthak Он также закрывает файл, если возникает исключение. Как правило, это считается лучше. Также см. Http://stackoverflow.com/questions/1369526/what-is-the-python-keyword-with-used-for – muddyfish

1

Я предпочитаю скомпилировать шаблон заранее и использовать его на каждой итерации.

import re 

pat = re.compile(r'This') 

with open('file') as f: 
    for line in f: 
     mat = pat.search(line) 
     if mat: 
      print(mat.group(0)) 
Смежные вопросы